2011-10-06 9 views
6

Millet, İşte Android - işleyicisi nesnesi için beklemek doğru yolu oluşturulacak

benim arka plan iş parçacığı için basitleştirilmiş bir koddur:

public class MyThread extends Thread { 
     private Handler _handler; 

     public void run() { 
     Looper.prepare(); 
     this._handler = new Handler(); 
     Looper.loop(); 
     } 

     public void DoSomething() { 
     if (!this.isAlive()) { 
      this.start(); 
     } 

     this._handler.post(blah); 
     } 
    } 

Ben sorun arka plan iş parçacığı olmayabilir olmasıdır ancak post() çağrısı yapıldığında işleyici nesnesini yarattı. Esas olarak, işleyici nesnesinin başlatılması için bir bekleme döngüsüne ihtiyacım var. Android altında bunu yapmanın kabul edilen yöntemi nedir?

Yardımlarınız için şimdiden teşekkür ederiz.

Selamlar, Peter

+0

".." DoSomething() * çağrısı yapıldığında ".. ..düzeni nesnesi oluşturuldu mu?" –

+0

Esasen evet. DoSomething() öğesinden start() çağrılana kadar (ilk defa) bu işleyici nesnesi oluşturulmayacaktır. Ama bg iş parçacığının çalışmaya başlamasına ve işleyici nesnenin oluşturulmasına kadar beklememiz gerekiyor. Akım, 50 ms uyuduğum ve işleyicinin yaratılıp yaratılmadığını kontrol ettiğim bir süre var. Daha iyi bir yol olup olmadığını merak ediyorum. Teşekkürler – Peter

cevap

3

Eğer Handler başlatmak ve post çağırmadan önce bu bayrak için beklemek sonra bir bayrak ayarlayabilirsiniz.

Eşzamanlı bir sistemde bir bayrağı beklemenin kolay bir yolu, CountDownLatch ile. İşleyici başlatıldıktan sonra 1 ve azalmaya başlayacaktır. Ayrıntıları buradan kontrol edin: http://download.oracle.com/javase/1,5,0/docs/api/java/util/concurrent/CountDownLatch.html

+0

Yardımlarınız için teşekkürler. Bu tam olarak ihtiyacım olana benziyor. – Peter

İlgili konular