ANR:Application Not Responding(应用程序无响应).当出现下列情况时,Android就会显示ANR对话框了:
对输入事件(如按键、触摸屏事件)的响应超过5秒 意向接受器(intentReceiver)超过10秒钟仍未执行完
毕Android应用程序完全运行在一个独立的线程中。这就意味着,任何在主线程中运行的,
需要消耗大量时间的操作都会引发ANR。那么如何避免呢?可以用两种方式:
1.
AsyncTask异步任务中,doInBackground()和onPostExecute(Result)两个方法非常重要
doInBackground() 这个方法运行在后台线程中,主要负责执行那些很耗时的操作,如移动
护理系统中的网络连接、解析XML等操作。该方法必须重载。onPostExecute(Result)
这个方法也运行于UI线程,在doInBackground(Params…)方法执行后调用,该方法用于
处理后台任务执行后返回的结果。
2. Thread子线程 + handler
- Handler mHandler = new Handler(){
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 0:
- //do something,refresh UI;
- break;
- default:
- break;
- }
- }
- };
你可以创建一个message对象,他可以发送对象,参数,用handler对象发送消息,接收到上面,判断消息,进行ui操作。
时间: 2024-10-27 01:35:28