2015-06-27 16 views

cevap

21

AsyncTask, Android uygulamalarının Ana Kullanıcı Arabirimi iş parçacığını verimli şekilde kullanmasına yardımcı olan soyut bir Android sınıfıdır. AsyncTask sınıfı, uzun süreli görevleri/arkaplan işlemlerini gerçekleştirmemize ve ana iş parçasını etkilemeden UI iş parçacığı üzerinde sonuca ulaşmamızı sağlar.

1. AsyncTask süreçleri işletim sistemine otomatik olarak tarafından öldürüldü değildir. AsyncTask işlemleri arka planda çalışır ve her durumda kendi işini bitirmekten sorumludur.. AsycnTask'ınızı iptal (true) yöntemini kullanarak iptal edebilirsiniz. Bu, doğrulanmış dönmek için isCancelled() çağrıları neden olur. Bu yöntemi çağırdıktan sonra, doInBackground() geri döndükten sonra onPostExecute() yerine onCancelled (Object) yöntemi çağrılır.

bunun tamamlanması operasyon sonrası

2., arka plan iplik o üzerinde çalıştığını durdurulur. AsyncTask, işiniz bittiğinde çağrılan bir onPostExecute()'a sahiptir. Bu yöntem, doInBackground() yönteminin işlemi tamamladıktan sonra çağrılır. doInBackground() sonucu, bu yönteme aktarılır.

25

Bir Etkinliğin içinde bir AsyncTask başlatırsanız ve cihazı döndürürseniz, Etkinlik yok olur ve yeni bir örnek oluşturulur.

Benzer şekilde, kullanıcı başka bir etkinliğe giderse, geçerli etkinlik yok olur veya arka plan etkinlik yığınınına gider ve yeni etkinlik ön planda olur.

Ancak AsyncTask ölmeyecek. Tamamlanana kadar yaşamaya devam edecek. Ve tamamlandığında, AsyncTask yeni etkinliğin kullanıcı arayüzünü güncelleştirmez. Gerçekten de, artık görüntülenmeyen etkinliğin eski örneğini günceller. Bu, java.lang.IllegalArgumentException türünün bir Özel Durumuna yol açabilir: Örneğin, Aktivite içinde bir görünüm almak için findViewById işlevini kullanırsanız, pencere yöneticisine eklenmez.

+1

"tamamlandığında, AsyncTask yeni etkinliğin kullanıcı arayüzünü güncelleştirmez. Gerçekten de artık görüntülenmeyen etkinliğin eski örneğini güncelleştirir" - Yeni etkinlik kısa sürdüyse, eski nasıl saklanır aktivitenin örneği yaşıyor mu? – Jaydev

+0

@JaydevKalivarapu Yeni etkinlik başladığında eski etkinlikten bitirme çağrılmayın. –

+0

Bu durumda, Intent kullanarak eski etkinliğe geri döndüğümde, varolan örneği kendim kullanır mıyım? – Jaydev

İlgili konular