以下两个方式效果一样吗?
1、
Hanlder handler = new Handler();
handler.post(new Runnable(){
public void run(){
//耗时操作
}
});
2、
final Runnable onCompleteRunnable = new Runnable() {
@Override
public void run() {
//耗时操作
}
};
onCompleteRunnable.run();
问题:我用第二种方法执行耗时操作,有时候会引起anr。第一种方法可以解决anr问题吗?
在android里面还是用第一种好。
你的第二种根本就没启用线程,只是纯粹的调用了run方法
启用以一个线程的步骤
1.实现runnable接口
2.创建thread对象
3.调用thread的start方法
Thread thread = new Thread(new runnable(){
for (int i = 0; i < 5; i++) {
System.out.println("我是"+Thread.currentThread().getName()+"线程的第"+i+"个数!!!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
第一种handler消息机制可以,第二种如下,可以用runOnUiThread()执行UI操作
new Thread(new Runnable() {
@Override
public void run() {
//do耗时操做
runOnUiThread(new Runnable() {
@Override
public void run() {
//更新ui
}
});
}
}).start();