背景线程和对话框之间的交互可以通过以下方法解决:
// 在主线程中创建Handler
Handler handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
if (msg.what == TASK_COMPLETE) {
showDialog();
}
}
};
// 在背景线程中执行任务
new Thread(new Runnable() {
@Override
public void run() {
// 执行耗时任务
// 任务完成后发送消息给主线程
handler.sendEmptyMessage(TASK_COMPLETE);
}
}).start();
public class MyTask extends AsyncTask {
@Override
protected Void doInBackground(Void... voids) {
// 执行耗时任务
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
showDialog();
}
}
// 在主线程中执行任务
new MyTask().execute();
public interface TaskListener {
void onTaskComplete();
}
// 在背景线程中执行任务
new Thread(new Runnable() {
@Override
public void run() {
// 执行耗时任务
// 任务完成后调用回调接口的方法
taskListener.onTaskComplete();
}
}).start();
// 在主线程中实现回调接口
TaskListener taskListener = new TaskListener() {
@Override
public void onTaskComplete() {
showDialog();
}
};
以上是几种常见的背景线程和对话框之间的通信解决方法,你可以根据具体需求选择合适的方法来实现。
上一篇:背景线程-两个网络调用