本篇文章2851字,读完约7分钟
影响产品效率的每一个问题,如功耗或内存占用,都会影响应用的成功。这就是为什么确保android系统在开发过程中的优化、平稳运行和无问题非常重要。这里没有必要讨论高效编程,因为我们不在乎您编写的代码是否经得起考验。即使是高效的代码也需要时间来运行。今天,在这篇文章中,我们将讨论如何尽可能缩短运行时间,以及如何开发用户喜欢的应用程序。
线程的有效使用
建议1:如何在后台取消一些线程中的操作
我们知道app运行过程中的所有操作默认都是在主线程(ui线程)中执行的,所以会影响app的响应速度。这将导致程序被卡住,死亡,甚至出现系统错误。
为了加快响应速度,耗时的操作(如网络请求、数据库操作或复杂的计算)需要从主线程转移到单独的线程。最有效的方法是在类级别完成这个操作,您可以使用asynctask或intentservice来创建后台操作。如果您选择使用intentservice,它将在必要时启动,然后通过工作线程处理请求(意图)。
使用intentservice时应注意以下限制:
●该类不向用户界面传递信息。如果您想向用户显示处理结果信息,请使用活动;;
●一次只能处理一个请求;
●每个请求处理过程都不能中断;
建议2:如何保持来自anr的响应
从用户界面线程中删除耗时的操作也可以防止系统无响应(anr)对话框出现在用户操作中。需要做的是继承asynctask来创建一个后台工作线程并实现doinbackground()方法。
另一种方法是自己创建一个线程类或句柄类。应该注意的是,这也会降低应用的速度,因为默认线程的优先级与主线程的优先级相同,除非您明确设置了线程的优先级。
建议3:如何在线程中初始化查询操作
当在后台处理查询操作时,显示数据不是立即的,但是您可以使用cursorloader对象来加速,这可以使活动和用户之间的交互不受影响。
使用此对象后,您的应用程序将为contentprovider初始化一个独立的后台线程进行查询,当查询完成时,它将把结果返回给调用查询的活动。
建议4:需要注意的其他方面
●使用strictmode检查ui线程中潜在的耗时操作;
●使用一些特殊工具,如systrace或traceview,来发现应用程序中的瓶颈;
●用进度条向用户显示操作进度;
●如果初始化耗时,请显示欢迎界面。
优化设备的电池寿命
如果应用程序很贵,请不要责怪用户卸载了你的应用程序。对于电池使用,主要功耗如下:
●更新数据时经常唤醒程序;
●使用edge或3g传输数据;
低文本数据转换,非jit正则表达式操作。
建议5:如何优化网络
●如果没有网络连接,请让您的应用程序跳过网络操作;仅在有网络连接且无漫游时更新数据;
选择兼容的数据格式,并将所有包含文本数据和二进制数据的请求转换为二进制数据格式请求;
●使用高效的转换工具,多考虑使用流转换工具,少使用树转换工具;
●为了更快的用户体验,请减少对服务器的重复访问;
●如果可能,请使用gzip框架库压缩文本数据,以有效利用cpu资源。
建议6:如何优化应用于前端的工作
●如果您考虑使用尾锁,请尝试将其设置为最低水平;
●为了防止潜在错误导致的功耗,请明确指定超时时间;
●启用android:keepscreenon属性;
●除了系统的gc操作之外,考虑手动回收java对象,如xmlpullparserfactory和bitmapfactory。还有正则表达式的matcher.reset(newstring)操作和stringbuilder.setlength(0)操作。
●注意同步问题,尽管它在主线程中是安全的;
●在列表视图中应更多地采用重用策略;
●如果允许,使用粗略的网络定位代替全球定位系统。全球定位系统与1毫安(25秒* 140毫安),而一般网络只使用0.1毫安(2秒* 180毫安);
●请务必注销gps的位置更新操作,因为此更新操作将在onpause()中继续。当所有应用程序取消此操作时,用户可以在系统设置中重新启用gps,而不会浪费电能;
●使用displaymetrics执行dpi任务时,请考虑在大量数学运算中使用低精度变量,并缓存变量值;
建议7:如何优化前台工作的应用
●请确保服务生命周期较短,因为每个进程需要2mb内存,前台程序需要内存时会重启;
●保持内存使用量不要太大;
●如果您想每30分钟更新一次,请在设备唤醒时进行;
●服务处于拉或睡眠的不良状态,这就是为什么应该在服务结束时使用警报管理器或配置属性stopself()。
建议8:其他预防措施
●整体更新前检查电池状态和网络状态,等待最佳状态进行大规模更换操作;
●让用户看到用电量,如更新周期和后台操作;
实现低内存使用的用户界面
建议9:如何找到布局显示问题
当我们为布局单独创建一个用户界面时,我们正在创建一个滥用内存的应用程序,这将在用户界面中产生令人讨厌的延迟。要实现平滑、低内存的用户界面,第一步是搜索应用程序,找出潜在的瓶颈布局。使用android sdk/tools/中包含的层次查看器工具。
另一个很好的工具是lint,它扫描应用程序源代码以发现可能的错误并优化控制结果。
建议10:如何解决问题
如果在布局显示结果中发现问题,可以考虑简化布局结构。线性布局类型可以转换为相对布局类型,这样可以减少布局的层次结构。
更加完美,不断优化
虽然以上每个建议似乎都是一个小小的改进,但是如果它能成为你日常代码的一部分,你会看到意想不到的结果。让google play看到更多出色、流畅、更快、更节能的应用程序,向android变得完美的目标迈出一步。(编译:克里斯)
三链:吃昆虫、吃厕所和油炸??3.模纸锻造,模具模具模具模具模具模具模具模具模具模具模具??. 95镣铐和镣铐??0.07%锝58.....
当前流行度:0
[娇娇]http://itougu.jrj/view/189514.j.....
当前流行度:0
1.1 .涓涓细流??邦邦、邦邦、邦邦、交邦和廖廖??要坚强,要坚强。.....
当前流行度:0
你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道,你知道........
当前流行度:0
缇落入三条锁链??3镝??6铥??0(乌桕脂含有3条链吗??4镝??4铥??0)死,死,死,死又死,4.72??......
当前流行度:0
那墙,墙,墙和墙呢??钳子里有丰富的镰刀、叉子、叉子、nan和链条,这些都是銮棒的来源.....
当前流行度:1
你想挑起镝,破坏哮喘吗??缇,汤,汤,3汤和柊镶嵌??链条??4."敌鲁,缇,汤,汤,汤."??.....
当前流行度:0
咸丰、大树、细垴、十二寸、相互涓涓??环秀细链,涓涓细流,砸铙钹,甩铙钹,砸铙钹,砸铙钹,砸响,砸得咝咝作响??葛格·岳格·柊.....
当前流行度:0