在软件开发中怎么样去避免ANR?.doc
《在软件开发中怎么样去避免ANR?.doc》由会员分享,可在线阅读,更多相关《在软件开发中怎么样去避免ANR?.doc(2页珍藏版)》请在三一文库上搜索。
1、在软件开发中怎么样去避免ANR?一:什么是ANR如果应用程序不能响应用户的输入了,那么就可以说应用ANR了。如果需要运行一个耗时较长的操作的时候,不要把这个任务放在UI线程上运行,而是单独创建一个线程运行那些操作。以下情况会出现ANR提示对话框:5秒内对一个输入动作没有反应。一个BroadcastReceiver在10秒内没有完成运行。二:如何避免ANR在activity的关键的生命周期方法: onCreate 和 onResume方法上尽可能处理越少越好的事情。下面列举的操作都是长时间运行的:网络工作、数据库操作、精确的计算,例如重新定制图片(应该在单独的工作线程中)、或者通过异步请求操作数
2、据库的情况下。最有效的创建一个工作线程来执行长时间操作的是Asynctask类。如果你非要自己创建一个自己的Thread或者HandlerThread类,你应该设置这个类的属性为background,通过调用Process.setThreadPriority() ,填上THREAD_PRIORITY_BACKGROUND参数。如果你不设置低优先级,那么你的线程仍然有可能减慢你的应用,因为它默认运行的优先级和你的UI线程的优先级一样。当你实现Thread或HandlerThread方法的时候,确定你的UI线程不会在等待工作线程结束的过程中被阻塞,不要调用Thread.wait()或者 Thread.sleep()。你的应用主线程不应该因为等待子线程完成而阻塞,而是应该提供一个Handler去接受其他线程完成后的结果。这样设计你的应用可以保证你的应用仍然能够响应用户的输入,避免ANR。接受BroadcastReciver的执行时间,约束它的执行时间,主要进行的操作是保存设置或者注册一个通知,这样的话,才能够避免当其他方法调用UI线程的时候,应用程序在执行长耗时的方法。如果非要在接收Broadcast后执行长时间的操作,可以启动一个IntentService来执行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 怎么样 避免 ANR
链接地址:https://www.31doc.com/p-3408565.html