2009-10-26 9 views
7

Çok sayıda etkinlik içeren bir android uygulamasına sahibim, her sayfanın yeni bir etkinlik olduğu bir kitap gibi bir şey düşünün. Kullanıcı, her aktivitede değişiklikler yapabilir, örneğin, farklı renkli işaretleyiciler vb. Ile belirli metinleri vurgulayabilir ve bu bilgiler, uygulama canlı kaldığı sürece hatırlayacağım (ve herhangi birini hatırlamak istemiyorum). bu olmadığında). Bu tür bilgileri depolamak için en iyi mekanizmanın, Tercihler mekanizmasını ifade etmek yerine onSaveInstanceState(Bundle outState) ve onCreate(Bundle)/onRestoreInstanceState(Bundle) aracılığıyla olduğunu biliyorum. Tek sorunum, kullanıcının önceki sayfalara (Etkinlikler) geriye doğru gidebilmesi ve bunu elde etmenin tek yolunun finish() numaralı telefonu arayarak onSaveInstanceState(Bundle outState) numaralı telefonu aramadan ve hatta bir dahaki sefere bile aramadan geçerli olanı öldürmesidir. Bu sayfayı temsil eden bir etkinlik başlatırdım, tamamen yeni bir örnek olurdu. Yani sorum şu: finish()'u aramadan önceki etkinliğe geri dönmenin bir yolu var mı? ya da, bu bilgileri kaydetmenin daha iyi bir yolu var mı? Belki de statik değişkenler aracılığıyla?Android: Son çağrıya dönmeden bitirmeden bitir()

Teşekkürler!

P.S. Uygulamamı farklı şekilde uygulayabildiğimi biliyorum. Böylece, her sayfanın kendi etkinliği olmayacak, ancak aradığım cevap bu değil.

cevap

8

StartActivity() öğesini Intent.FLAG_ACTIVITY_CLEAR_TOP gibi bayraklarla kullanmayı deneyin. Tüm yazının tamamını buradan okuyabilirsiniz:

+0

Benim için iyi çalışıyor. – Chrishan

2

Tam olarak aynı sorun vardı ve çok düşündüm ve denedikten sonra, IMHO En uygun çözümü buldum. Etkinliği miras aldım ve yalnızca varsa, öldürmek için statik bir yöntem ekledim. Böylece, aktiviteyi çıktığı zaman öldürmek yerine. Tekrar çağrıldığında onu öldürürüm. Örneğin,

MyActivity.killIfExists(); 
startActivity(new Intent(this, MyActivity.class)); 

Böylece uygulamanın her zaman tekil olacak ve onSaveInstanceState ile devlet kaydedin.

İlgili konular