AsyncTask
sınıfını genişleterek ayrı bir iş parçacığı tanımladım. Bu sınıfta AsyncTask'in onPostExecute
ve onCancelled
yöntemlerinde bazı Tost ve Diyaloglar gerçekleştiriyorum. tost yapmak gereken tek şey söz konusu uygulamanın bağlam böyle gerektirir:İçeride AsyncTask'ı kullanmanın/kullanmanın en iyi yolu nedir?
Toast.makeText(getApplicationContext(),"Some String",1);
diyaloglar da onun kurucu bir bağlam gerektirir AlertDialog.Builder
kullanılarak oluşturulur. Bu bağlamın Faaliyetin içeriği olması gerektiğini düşünerek haklı mıyım? yani getActivity
akım aktivitesine döner kullanıcı tanımlı sınıf olabilir
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
. Eğer öyleyse bu durumun üstesinden gelmenin en iyi yolu nedir? getActivity
gibi bir sınıf oluşturmak veya şu anki etkinliğin içeriğini AsyncTask yapıcısına geçirmek mi istiyorsunuz?
Context
kullanımını anlamaya çalışıyorum - bellek sızıntılarının bir sorun olabileceğini fark ettim (bunu henüz anlamadım) ve getApplicationContext()
kullanımı mümkün olan en iyi yaklaşımdır.
Teşekkürler Phil. AsyncTask'im şu anda benim aktivitem için içsel bir sınıftır (yukarıdaki gibi). Ancak, bu Totem.makeText (getApplicationContext(), ... 'MyTask'ın UI yöntemleri,' AlertDialog.Builder (getApplicationContext()) 'için çalışıyor iken, bu işe yaramıyor. Doğru bağlamı almak Bu nedenle, aktivitenin içeriğini MyTask'ın yapıcısına iletmek bir gereklilik değil midir? Yoksa bir şey eksik miyim? –
Diyaloğunuzu yaptığınız yerin tam kodunu gönderebilir misiniz? Dialog üzerinde .show() yöntemini çağırın –
Tamam, evet! Hem Toast 'hem de' AlertDialog ', yukarıdaki gibi gösterdiğiniz gibi MyTask'ın yapıcısına içeriği aktarırken, yani MyTask'ı kullanarak MyTask'ı başlatırken (MyTask) Bu etkinlik, ana faaliyette bir onClick olayından, yani, sadece açıklığa kavuşmak zorundayım: 'MyTask (this)', aktiviteyi hem 'Toast' hem de 'AlertDialog' tarafından kullanılabilen' MyTask'a iletir. "Toast", getApplicationContext() 'yi kullanarak uygulamalar bağlamını kullanabilirken," AlertDialog ", yani Etkinliğin içeriği - yanlış gittiğim yer olduğunu düşünün. –