它可能看起來非常滑稽和愚蠢的問題..有花紋圖案
我想看看周圍的Runnable,線程,服務與Android應用程序意圖服務的後臺操作混淆。
所以我創建了一個活動,創建活動裏面像,
public class ExectuableThread implements Runnable{
@Override
public void run() {
Log.e("current-thread", String.valueOf(Looper.getMainLooper().isCurrentThread())); // **Returning true**
btnDone.setText("will not work");
}
}
因此,在上述情況下按鈕文本正在改變一個簡單的線程。
不要緊,我打電話這樣的:
Thread t = new Thread (new ExectuableThread());
t.run();
OR
Thread t = new Thread (new ExectuableThread());
t.start();
爲什麼我的按鈕上的文字是,如果通過調用start()改變; - 當使用後臺線程?
現在一個非常有趣的場景;如果我這樣拖延2秒,
public class ExectuableThread implements Runnable{
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.e("current-thread", String.valueOf(Looper.getMainLooper().isCurrentThread()));
btnDone.setText("will not work");
}
}
然後,如果我調用start(),那麼視圖沒有更新;在run()調用的情況下。它會工作。開始之間
差()和run()是明確的,但問題是相同的,爲什麼按鈕文本正在更新如果線程是在後臺。
我認爲這將有助於您瞭解運行之間的差異()和start()方法 HTTP://javarevisited.blogspot 。在/ 2012/03 /差之間的啓動和運行,method.html#axzz4ip9wGDe1 – santoXme
@santoXme感謝。這我明白,但會有所幫助如果你能糾正我的問題或回答。:) – Custadian