SORU
19 Aralık 2012, ÇARŞAMBA


Android: ne Zaman bir İşleyici kullanmalıyım ve ne zaman bir iş Parçacığı kullanmalıyım?

Bir şey long running task veya ağ kullanan, ya da her ne sebeple olursa olsun bir mantık gibi asynchronously,, çalıştırmak için ihtiyacım olduğunda new Thread ve çalışan bir başlangıç gayet iyi çalışıyor. handler oluşturma ve çalışan olarak iyi çalışıyor. Ne fark eder? Her zaman için kullanmalı mıyım? Avantajları Handler Thread Bir değil kullanma nedenleri nelerdir?

PS. - Bu soru aşkına, hadi AsyncTaskgörmezden. - Handler().postDelayed kullanmak durumunda bana açık, bu soru aşkına bu göreve hemen başlamak istiyorum varsayalım.

CEVAP
19 Aralık 2012, ÇARŞAMBA


Yaptığınız "ağır" bir konu onu yapıyor olmalı. her ne olursa Eğer açıkça kendi iplik başlamak istemiyorsanız, o zaman veya kullanıcılar tarafından arabirimi yanıt gergin yavaş fark gibi olabilir (UI) ana iş parçacığı üzerinde çalışacak.

İlginç bir iş parçacığı kullandığınız çoğu zaman yararlı da başlıyor bu iş parçacığı ana iş parçacığı arasında bir iletişim aracı olarak İşleyicisi kullanmak için.

Tipik İplik/İşleyici bir etkileşim böyle bir şey görünebilir

Handler h = new Handler(){
    @Override
    public void handleMessage(Message msg){
        if(msg.what == 0){
            updateUI();
        }else{
            showErrorDialog();
        }
    }
};

Thread t = new Thread() {
    @Override
    public void run(){
        doSomeWork();
        if(succeed){
            //we can't update the UI from here so we'll signal our handler and it will do it for us.
            h.sendEmptyMessage(0);
        }else{
            h.sendEmptyMessage(1);
        }
    }   
};

Genel rağmen, ev almak olduğunu kullanmalısın, bir iş Parçacığı her zaman yaptığın bazı işler olabilir, uzun süren ya da çok yoğun (yani hiçbir ağ, dosya IO, ağır arithmatic, vb).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • dope2111

    dope2111

    29 HAZİRAN 2009
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011