İplikleri güvenli bir şekilde nasıl durdurabilirim?Android'de işitme güvenli bir şekilde nasıl durdurulur?
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
});
downloadThread.start();
}
İplikleri güvenli bir şekilde nasıl durdurabilirim?Android'de işitme güvenli bir şekilde nasıl durdurulur?
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
});
downloadThread.start();
}
Konuyu kesme. İş parçacığının run()
yönteminde, farklı mantıksal blokların sonunda isInterrupted()
değerini kontrol edin. Örneğin, run()
yönteminizin üç mantıksal adımda bölünebildiğini söyleyin - ağ bağlantısı oluşturma, görüntü indirme ve görüntüyü bir dosyaya kaydetme. Bu adımların her birinin sonunda, isCancelled()
için kontrol edin ve bu noktada tüm durumu atmayı durdurun.
class NetworkFetcherTask extends AsyncTask<String, Void, Void>{
public void doInBackground(String... params){
String url = params[0];
//Open connection if not cancelled
if(isCancelled()){
conn.close();
return;
}
NetworkConnection conn = new NetworkConnection();
//Download the image if not cancelled
if(isCancelled()){
conn.close();
result.discard();
return;
}
NetworkResult result = conn.fetchUrl(url);
conn.close();
//Save the image to a file if not cancelled
if(isCancelled()){
result.discard();
return;
}
File file = new File();
file.dump(result);
}
}
Wohoo! Eski soru! Gerçekleştirilmemiş –
Bir örnek verebilir misiniz, ne teklif edeceğinize nasıl karar verirsiniz? –
İşte gidiyorsun. Ve lütfen isInterrupted() isCancelled() seçeneğine dikkat edin. isInterrupted(), bir AsyncTask değil bir Thread'deki bir yöntemdir. Özür dilerim. –
... – dalle
Bu böyle sık iyi cevaplarla sık soru: ([Nasıl Java hızlı ve temiz bir şekilde bir iş parçacığı iptal etmek] http: // stackoverflow. com/questions/94011/nasıl yapılır-iptal-a-thread-in-a-hızlı-ve-temiz-in-java) –