我處於一種綁定狀態。我正在編寫一個具有更新其值的進度對話框的應用程序。我下面就如何使一個本教程中,我結束了這段代碼: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