このスニペットは、Android のハンドラー (スレッド処理) を説明しているサイトから取得しました。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread myThread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 4; i++) {
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (i == 2) {
mUiHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(MyActivity.this, "I am at the middle of background task",
Toast.LENGTH_LONG)
.show();
}
});
}
}//ends for()
// THE SECOND HANDLER, RIGHT HERE!
mUiHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(MyActivity.this,
"Background task is completed",
Toast.LENGTH_LONG)
.show();
}
});
} //ends run()
});
myThread.start();
2 番目に実行されたタスクで出力されたタスクから判断するとHandler
、
Toast.makeText(MyActivity.this,
"Background task is completed",
Toast.LENGTH_LONG)
.show();
記事の執筆者は、2 番目Handler
が最後に実行されることを確信しているようです。
私の質問は、最初のジョブが終了しHandler
た直後に 2 番目が最後に実行されるというのが本当かどうかということです。Handler
ただし、複数回実行すると、最後に実行されます。私の考えでは、Handler
はバックグラウンドで実行されるためThread
、これら 2 つのタスクのどちらHandler
が最初に実行されるかを知ること (予測することさえ) は想定されていません。説明が必要です、事前に感謝します。