2011-03-23 17 views

cevap

2

Handler'un removeCallbacks() işlevini kullanmanız gerekir.

örnek kod:

@Override 
public boolean onBackPress(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     handler.removeCallbacks(yourRunnable); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
+0

@Viktor kodunuzu bt çalışmıyor, hala iş parçacığı çalışıyor ... – Siten

+0

@siten: İş parçanızın hala çalışıp çalışmadığını nasıl belirleyebiliyorsunuz? – Wroclai

+0

CATlog, – Siten

2

stop veya destroy yöntemlerini kullanamazsınız. onStop yönteminde this kullanmanız gerekir.

+0

Bağlantıyı 'yukarıdaki' ifadesindeki 'bu' kelimesine bakın .. – Udaykiran

+0

O, orijinal olarak 'Thread' gibi aynı bağlamda olmayan 'Handler' kullanıyor. – Wroclai

+0

ya da rit. Biz .. (... o kadar – Siten

1

Oluşturduğunuzda iş parçacığına bir başvuru yapın. Etkinliğinizde , referans iş parçacığını duraklatın veya öldürün.

+0

@Override \t public void onBackPressed() { \t \t handler.removeCallbacks teşekkür durdurabilir veya senin için oylama kadar .. bir kine yol göstermek için .. teşekkürler iplik ve yöntemi yok olamaz r1); \t \t super.onBackPressed(); \t} o tamam mı ?? – Siten

+0

Bu doğru değil. Handler öğesinden 'removeCallback() işlevini kullanın. Cevabımı aşağıya bakın. – Wroclai

0

Sen aktivitesinde onBackPressed() işlevini geçersiz kılarak geri düğmesi basın bir eylem atayabilirsiniz. Bu eylemin iş parçacığını durdurmak için bir komutu olmalıdır. Aşağıdaki gibi görünecektir.

+0

İşleyiciyi ... ve thread.stop() veya işleyiciyi kullandım.durdurmak(); Geri tepme – Siten

+0

içinde görünmez, iş parçacığına bir ad verdiniz ve onBackPressed'de kullandınız mı? –

0

İş parçacığı daha kolay ve daha hızlı bir şekilde durdurmak için bir demo.

Button back = (Button)findViewById(R.id.back); 
back.setText("Back"); 
back.setOnClickListener(this); 

private Handler handler = new Handler() 
{ 
@Override 
    public void handleMessage(Message msg) 
    { 
     super.handleMessage(msg); 
     if(msg.obj.toString().contentEquals("hello")) 
     { 
      // do whatever u what to perform after thread stop.... 
     } 
     removeDialog(0); 
     } 
}; 

@Override 
public void onClick(View v) 
{ 
    if(v==back) 
    { 
     showDialog(0); 
     t=new Thread() 
     { 
      public void run() 
      { 
       Message toMain = handler.obtainMessage(); 
       toMain.obj = "hello"; 
       handler.sendMessage(toMain); 
      } 
     };   
     t.start(); 
    } 
} 

@Override 
protected Dialog onCreateDialog(int id) 
{ 
      switch (id) 
     { 
        case 0: 
      { 
          ProgressDialog dialog = new ProgressDialog(this); 
          dialog.setMessage("Connecting . . . . . ."); 
          dialog.setIndeterminate(true); 
          dialog.setCancelable(true); 
          return dialog; 
        } 
       } 
       return null; 
} 

İş parçacığını oluşturmak veya durdurmak için bu yöntemi kullanın. Umarım daha az zaman alır.

0

İşleyici kullanıyorsanız, geri bildirimleri handler.removeCallbacks (runnable); Bu, mükemmel çalışmalıdır. Mutlu Kodlama :)

İlgili konular