İşte basit, kısa, anlaşılması kolay ve benim için mükemmel çalışan bir çözüm. Başka bir konu bittiğinde ekrana çizim yapmam gerekiyordu; ama yapamadı çünkü ana iş parçacığı ekranı kontrol ediyor. Yani:
(1) Global değişkeni ben yarattım: boolean end1 = false;
İş parçacığı, biterken onu true olarak ayarlıyor. Bu, yanıtlandığı "postDelayed" döngüsü tarafından ana iş parçacığında toplanır.
(2) İleti dizim şunları içerir:
void myThread() {
end1 = false;
new CountDownTimer(((60000, 1000) { // milliseconds for onFinish, onTick
public void onFinish()
{
// do stuff here once at end of time.
end1 = true; // signal that the thread has ended.
}
public void onTick(long millisUntilFinished)
{
// do stuff here repeatedly.
}
}.start();
}
(3) Neyse ki, "postDelayed" ana iş parçacığında çalışır, bu nedenle diğer iş parçacığı saniyede bir kontrol edilir. Diğer iş parçacığı bittiğinde, bu daha sonra yapmak istediğimiz her şeye başlayabilir.
Handler h1 = new Handler();
private void checkThread() {
h1.postDelayed(new Runnable() {
public void run() {
if (end1)
// resond to the second thread ending here.
else
h1.postDelayed(this, 1000);
}
}, 1000);
}
(4) Son olarak, aşağıdaki numarayı arayarak kodunuzun herhangi bir yerinde çalışmaya başlayın:
void startThread()
{
myThread();
checkThread();
}