2012-07-24 39 views
11

Uygulamam boşken, Android işlemi sonlandırıyor. Kullanıcı bir süreden sonra uygulamayı yeniden açarsa, yalnızca en iyi Etkinlik oluşturulur - bu benim için bir sorundur çünkü etkinlik diğer nesnelerin başlatılmasına bağlıdır (şimdi yok edilmiştir).Süreç öldükten sonra Android uygulamasını yeniden başlatılıyor

Bu durumda yapmak istediğim, uygulamayı yeniden başlatmaktır. Bunu nasıl yapabilirim?

+0

Android belleği boşaltmak için bir App öldürür. Yani uygulama boşta ise, işletim sisteminin diğer programları yürütmek için belleğe ihtiyaç duyduğu zaman bir süre sonra ölmesi muhtemeldir. – gkris

+0

Belki de _vital_ _objects_ çalışır durumda tutmak için arka planda bir servise ihtiyacınız var. Hizmetin, öldürüldüğünde yeniden başlatıldığından emin olmak için 'Yapışkan Niyet 'kullanabilirsiniz. – DroidBender

cevap

0

Uygulamanızın Application sınıfındaki uygulamasında bu gibi Nesneleri saklamayı düşünmelisiniz.

Bu nesneler daha kalıcı olması gereken bir durum içeriyorsa, bu gibi Nesnelerin durumunu her bir Etkinliğin onPause() yönteminde, veritabanına SharedPreferences veya uzaktan olarak kaydetmelisiniz.

+6

, "Uygulama" sınıfında tutsanız bile, işlem "Android" tarafından öldürüldükten sonra nesneler kaybolacak ve "başlatıcı etkinlik" ile başlamayacaksınız, ancak son görülebilir olanla. –

7

Sadece Application daha önce Android tarafından yok edildikten sonra, özel bir Application sınıfta bir değişkeni tutarak bu yapabileceğini, ve uygulamamızla başlatıldıktan sonra true ayarlayın başlatılan edildiğini tespit. Yani Uygulamamız yeniden başlatıldığında, bu bayrak yanlıştır ve sonra sadece ana ActivityFLAG_ACTIVITY_CLEAR_TOP belirterek başlatmak için bir Intent olun:

Intent reLaunchMain=new Intent(this,MainActivity.class); 
reLaunchMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(reLaunchMain); 
+0

Bu kodu nereye koymalıyım? –

+0

etkinliğinin onCreate içinde yaparsam çöküyor ne tür bir istisna var? Artık uygulamanızın Android tarafından yeniden başlatıldığını söylediğinizde bunu yapmanız gerekir. –

+0

@OvidiuLatcu hi, Uyguladığınız etkinlik (ve yeniden oluşturulduğunda) başlatıcı olmadığında Uygulama nesnesi yeniden oluşturuluyor mu? Bunu sormam gerekiyor çünkü etkinlik yeniden oluşturulduğunda hata ayıklayıcısını bağlayamıyorum. Tks –

0

Ben sadece senin için bu cevabı düşünüyorum.

bitiş ilerleme çağrısının ardından bu

 finish(); 
     Intent intent = new Intent(this, sameactivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
İlgili konular