1.在Activity 中需要做耗时操作时,需要用到 android.os.Handler。并在线程运行完毕后,发送消息运行下一步。
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);//如果线程做延迟操作,
} catch (InterruptedException e) {
e.printStackTrace();
}
saveImage(bit1, coverPath1); //此处做耗时操作
Message m = new Message();
m.what = 2;
handler.sendMessage(m);
}
});
thread.start();//启用线程
break;
case 2:
dialog.dimiss();
break;
}
}
};
2.并通过Message 发送消息到 Handler 处理消息,开启线程。
Message m = new Message();
m.what = 1;
handler.sendMessage(m);
3.如果需要在线程运行的过程中对界面控件进行操作,需要在Thread 内部 用到 runOnUiThread();
runOnUiThread(new Runnable() {
@Override
public void run() {
button.setClickable(true);
}
});