【android,13】13.避免anr(application no response)的操作
2013-12-24 19:44
531 查看
一、出现applicationno response 原因:
1、原因:
①、activity是在主线程里面被创建的,
activity里面的按钮控件的点击事件,
界面的显示 view对象内容的更改,
这些操作都是运行在主线程里面的.
主线程还处理Window.Callback, KeyEvent.Callback,
与窗体相关显示的回调函数, 还处理了与点击,键盘
等相关的点击事件.
所以当主线程阻塞久了就不能响应其他操作,就会报anr(application no response)异常。
二、为了避免应用程序出现anr的异常:
1.耗时的操作都不能放在主线程里面执行,要放在子线程中执行,这些操作。
如以下操作:
拷贝大的文件. 100M
访问网络的操作
阻塞式的请求. udp socket
例:
public class AnrActivityextends Activity {
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//按钮的点击事件:
public void click(View view){
newThread(){ //创建子线程:
public void run() {
System.out.println("睡眠10秒钟");
System.out.println(Thread.currentThread().getName());
//当前线程睡眠10秒钟
try {
Thread.currentThread().sleep(10000);
}catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
相关文章推荐
- android 代码实现控件之间的间距
- 解決Linux下Android开发真机调试设备不被识别问题
- [Android]在代码里运行另一个程序的方法
- [软件咨询]WPS2012正式版已发布 金山Office移动版4.0发布
- Android笔记-Linux Kernel Ftrace (Function Trace)解析
- android USB如何修改VID具体实现
- Android Mouse实现过程详细笔记
- 深入Android Browser配置管理的详解
- Android Mms之:深入理解对话列表管理
- Android APP与媒体存储服务的交互
- android 多线程技术应用
- Android之采用execSQL与rawQuery方法完成数据的添删改查操作详解
- Android数据类型之间相互转换系统介绍
- 通过Android trace文件分析死锁ANR实例过程
- Android实现左右滑动效果的方法详解
- Android 各国语言缩写及简称详细介绍
- Android 自动判断是电话,网址,EMAIL方法之Linkify的使用
- android IPC之binder通信机制
- Android应用开发中模拟按下HOME键的效果(实现代码)
- Android 读写文件方法汇总