2010-04-28 21 views
15

AsyncTask hala arka planda çalışan Activity.finish() üzerinde ne olur?AsyncTask ile Activity.finish() öğesinde hala arka planda çalışan ne oluyor?

Yalnızca Activity Stack (Etkinlik Yığını) 'ndan açılır, ancak AsyncTask tamamen tamamlanana kadar Activity nesnesini yok etmeyi bekleyin (AsyncTask benim Faaliyetimin iç sınıfıdır)?

Ayrıca, AsyncTask etkinliğin örneğine hiçbir atıfta bulunmayan bir iç, içsel olmayan sınıf olsaydı, farklı davranır mı?

cevap

11

Aynı şeyleri Thread ile denedim ve gözlemlemem bu iş parçacığı çalıştırmaya devam ediyor.

+17

Evet, "AsyncTask" çalışmaya devam edecek. 'Aktivite' için bir referans üzerine, 'Aktivite' nin çöp toplanmasını engellemeye devam edecektir. Statik bir iç sınıf ya da 'Aktivite' ya da herhangi bir şeye işaret eden bir şey olmayan tamamen bağımsız bir sınıf olmadıkça Etkinlik '(örneğin, bir 'Görünüm'). – CommonsWare

+0

@CommonsWare ancak sonra, AsyncTask'ın UI iş parçacığı üzerinde çalışan yöntemlerinden biri çağrılırsa ve bu, Activity'ın 'findViewById (R.id.something_in_the_activity_layout) 'gibi Aktivite yöntemlerini çağırmak için Kullanıcı Arayüzü görünümlerini değiştirirse ne olur? Hala çalışıyor mu, yoksa sessizce mi başarısız oluyor? –

+0

@GianniCostanzi: Özette cevap vermek imkansız, üzgünüm. – CommonsWare

İlgili konular