我处于一种绑定状态。我正在编写一个具有更新其值的进度对话框的应用程序。我下面就如何使一个本教程中,我结束了这段代码:Android - 确定线程执行完成时的状态
progress = new ProgressDialog(this);
progress.setMessage("Scanning for Devices");
progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progress.setIndeterminate(true);
progress.setProgress(0);
progress.show();
final int totalProgressTime = 100;
final Thread t = new Thread() {
@Override
public void run() {
int jumpTime = 0;
BTAdapter.startDiscovery();
while(jumpTime < totalProgressTime) {
try {
sleep(250);
jumpTime += 5;
progress.setProgress(jumpTime);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
t.start();
但是现在,当进度达到100时,while()
循环不再执行,现在我不能完全编程,如果知道进展是否完成。代码方面,线程将运行直到进度达到100为止。与异步任务中我有一个postExecute
函数不同,线程似乎没有一个函数来停止自己并告诉你(一个覆盖或一个监听器)它是完成执行。
有谁知道如何知道线程何时停止执行其任务或在任务完成时调用外部函数?
我试图在while
循环后调用函数onExecuteAfter
来更新我的UI线程,但这是徒劳的。
任何帮助,非常感谢。
*线程似乎没有停止的函数*:执行以方法运行结束。 *或在任务完成时调用外部函数*没有这样的事情。你必须自己实现它。 – Blackbelt
使用activity.runOnUiThread()如果你想在非UI线程上执行ui上的代码 – Ramin
Rxjava可能会触及你的请求 – Harlan