在项目业务代码开工之前,最好把这些问题都解决掉,否则必将酿成大祸害。它们是:
特定的机型上出问题时,别着急。我们可以尝试以下几个办法。
1.如果app在调试的过程中出现闪退,此时在logcat下日志会被新起来的进程冲刷掉。这时需要把过滤器选择为No filter 把日志级别选为 error即可查看到上一次崩溃的日志。
2.有一种情况是手机并不在我们身边,我们也无法使用调试工具。此时可以接入一些第三方的日志记录工具。在开发状态下不建议使用友盟 360之类sdk,因为很有可能我们的app根本无法连接到网络就崩溃了。 可以选择把日志存到本地文件中。再又使用手机的人发回来。一般这个人是测试。
3.如果app未接入任何日志保存工具,可以在data/anr/目录下查看到所有的ANR异常信息。但需要su权限。否则无法访问到。
1.素材有必要使用压缩后的。推荐熊猫PNG压缩。
2.资源能用代码画尽量使用代码去画,而不要使用静态资源。
3.在复杂的布局上,比如很多app的首页需要加载不同类型的item。使用了RecyclerView多类型加载,刷新数据时一定要使用单独对item刷新api。切勿使用notifyitemchanged()方法,这里要用两个参数的notifyItemChanged(1,"gfg")方法。
4.数据懒加载,或排队加载
5.混淆可以使包减小含:(xml 资源 class等)
6.如果玩得不是很6,尽量不要写静态引用,匿名内部类这种会导致内存泄漏的东西。如果很担心自己失误的写了,一定要去分析它们,把他们揪出来。
7.Activity的层级不要太深。过深会在低内存设备上被回收栈底的。
1.发现某处代码可以复用性的封装一下或者改良一下会更好的时候一定要乘早,不要拖延。(烂泥巴只会越来越烂,后面改=永远没可能)
2.debug编译期间可以把用不到的abi过滤掉,会让我们加速部署。
3.尽量保持较新的 support library依赖。因为较高的版本中修复了一些bug。
4.接入第三方包时,最好与自身模块保持独立,做到随时解耦,随便复用。
接入第三方包时,最好与自身模块保持独立,做到随时解耦,随便复用。可能很多人不理解:举个例子,如果需要将imgloader替换成fresco,若之前独立出自己的方法,则会很简单,否则得一个个替换,贼麻烦。
5.多个native库依赖时,若发现某些abi上不支持,那么就需要保持最小的abi。否则会给某些机型优先读取它更合适的架构。会造成灾难性的崩溃。如:ARM文件夹中含两个so,ARMv8中只有一个。届时手机优先加载了ARMV8的情况下,将带来找不到so库的崩溃异常。
6.不要太随性的引入第三方依赖库,如果只是用了很小一部分功能,建议剥出来自己封装。
7.第三方的包含私有api为暴露时,记得用反射去实现。当然这一切需要我们能翻他们的sdk源码读。也许被混淆了。这时就可以使用动态调试去跟踪。
8.多数情况下官方的support包比第三方要好得多。只是我们不知道,或者不熟悉。
9.渐变图、纯色图、带一根线的图用shape,不要静态图。会引发血案!
10.当无法通过搜索解决问题的时候,读源码是最快的解决思路。千万不要瞎猜和尝试随缘写代码来解决问题。
11.封装控件时注意对资源类型做校验
如:Image.setImageResource(img);
这里的img需要做强校验,类型检测,防止别人用的时候不小心写错了。因为如果我们不主动抛出异常。靠LayoutInflater通过反射去解析xml时提示出了的错误日志非常难看。一般还会伴随一大堆调用栈和闪退出现。
12.冷启动优化,不要在Application启动时里做过多的任务&第一个Activity里也是一样。最好把初始化的白屏Window设上一张图片过渡一下。
操作系统 Windows/MacOSX/Linux 编程语言 Java HTML/JS (Hybrid/Web App) C/C++ (NDK) SQL (DB) Kotlin 开发工具 IDE Android Studio Eclipse 调试工具 网络调试 Charles Wireshark Fiddler tcpdump Paw/Postman 内存分析 monitor MAT Androi
到此我们已经全面了解了一些关键概念,如Internet、WWW、客户端、服务器、本地应用、移动网页应用,前后端开发以及技术架构等。 现在让我们再来回顾一下引言部分提出的问题: 为什么要学?是不是适合你?怎么学? 我们的建议是: 1. 如果你偏感性一点,喜欢与人交流多于服务器命令行交互,那么你适合学习客户端开发技术,而在客户端技术里,HTML5将在PC端替代Flash和Silverlight插件,在
1.1.1. Rokid云端技能协议 1.1.2. 大纲 1.1.3. 1. 简介 1.1.4. 2. Request 1.1.5. 3. Response 1.1.1. Rokid云端技能协议 Rokid 开放平台 版本:1.0.1-alpha 1.1.2. 大纲 简介 一些概念 Request 协议概览 Session 定义 Context 定义 Request 定义 Response 协议概
通过Tabris.js 2开发者app可以查看一些Tabris.js示例,并可以方便地开发移动app而不必执行构建操作。只需通过以下链接,就可以在app store中免费使用Tabris.js 2开发者app,或在移动设备的应用商店中搜索“Tabris.js”。 尝试示例 Tabris.js示例是一系列小型app,用于展示框架的强大功能和灵活性。它们完全用JavaScript编写。你可以在Tabr
《HeyThings IoT服务平台开发者服务协议》(以下简称“本协议”)为广东欢太科技有限公司(以下简称“欢太”)与所有在HeyThings IoT服务平台(以下简称“服务平台”)上发布产品的开发者(以下简称“开发者”)就产品发布所签订的协议。 请开发者认真阅读、充分理解本协议各条款,特别是免除或者限制欢太及其关联公司责任的条款,对开发者的权利限制条款,争议解决和法律适用条款等,该类条款将以加粗
开发人员协议 请务必认真阅读和理解本《360浏览器应用开放平台开发人员协议》(以下简称"协议")中规定的所有权利和限制。在您参与360浏览器应用开放平台并使用应用中心分发产品时,您首先应接受本《协议》条款,如果您不接受本协议或违反了协议,奇虎360有权采取以下措施:驳回应用审核、下线产品、删除帐户、拒绝访问等。 本《协议》是开发人员与北京奇虎科技有限公司(下称"奇虎360")之间关于利用360浏览