开发工具:
文件大小: 36kb
下载次数: 0
上传时间: 2012-03-27
详细说明: ANR定义 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户 显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择让程序继续运行,但是,他们在使用你的应 用程序时,并不希望每次都要处理这个对话框。因此,在程序里对响应性能的设 计很重要,这样,系统不会显示ANR给用户。 如何避免: 考虑上面的ANR定义,让我们来研究一下为什么它会在Android应用程序里发生和 如何最佳构建应用程序来避免ANR。 Android应用程序通常是运行在一个单独的线程(例如,main)里。这意味着你 的应用程序所做的事情如果在主线程里占用了太长的时间的话,就会引发ANR对 话框,因为你的应用程序并没有给自己机会来处理输入事件或者Intent广播。 因此,运行在主线程里的任何方法都尽可能少做事情。特别是,Activity应该在 它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操 作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺 寸,应该在子线程里(或者以数据库操作为例,通过异步请求的方式)来完成。 然而,不是说你的主线程阻塞在那里等待子线程的完成——也不是调用 Thread.wait()或是Thread.sleep()。替代的方法是,主线程应该为子线程提供 一个Handler,以便完成时能够提交给主线程。以这种方式设计你的应用程序, 将能保证你的主线程保持对输入的响应性并能避免由于5秒输入事件的超时引发 的ANR对话框。这种做法应该在其它显示UI的线程里效仿,因为它们都受相同的 超时影响。 IntentReceiver执行时间的特殊限制意味着它应该做:在后台里做小的、琐碎的 工作如保存设定或者注册一个Notification。和在主线程里调用的其它方法一样 ,应用程序应该避免在BroadcastReceiver里做耗时的操作或计算。但不再是在 子线程里做这些任务(因为BroadcastReceiver的生命周期短),替代的是,如 果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个 Service。顺便提及一句,你也应该避免在Intent Receiver里启动一个Activity ,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。如果 你的应用程序在响应Intent广播时需要向用户展示什么,你应该使用 Notification Manager来实现。 一般来说,在应用程序里,100到200ms是用户能感知阻滞的时间阈值。因此,这 里有一些额外的技巧来避免ANR,并有助于让你的应用程序看起来有响应性。 如果你的应用程序为响应用户输入正在后台工作的话,可以显示工作的进度 (ProgressBar和ProgressDialog对这种情况来说很有用)。 特别是游戏,在子线程里做移动的计算。 若你的应用程序有一个耗时的初始化过程的话,考虑可以显示一个Splash Screen或者快速显示主画面并异步来填充这些信息。在这两种情况下,你都应该 显示正在进行的进度,以免用户认为应用程序被冻结了。 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/Zengyangtech/archive/2010/11/21/6025671.aspx 2、什么情况会导致Force Close ?如何避免?能否捕获导致其的异常? 3、Android本身的api并未声明会抛出异常,则其在运行时有无可能抛出runtime 异常,你遇到过吗?诺有的话会导致什么问题?如何解决? 4、简要解释一下activity、 intent 、intent filter、service、Broadcast、 BroadcaseReceiver Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之 中,Activity具有自己的生命周期(由系统控制生命周期,程序无法改变,但可 以用onSaveInstanceState保存其状态)。 对于Activity,关键是其生命周期的把握(如那张经典的生命周期图=.=),其 次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState), 以及Activity之间的跳转和数据传输(intent)。 Activity中常用的函数有SetContentView() findViewById() finish() startActivity(),其生命周期涉及的函数有: void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy() ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.