2012-05-30 123 views
1

我有一個主要活動,用戶從中開始幾個活動startActivityForResult。 這可能是一個外部應用程序,如xing條形碼掃描儀或interview活動,如mapview或日曆等。避免破壞活動

問題是,通過執行startActivityForResult我的主要活動已暫停,並可能由android系統終止。 Somtimes,當用戶在開始的活動中停留很長時間時,會發生這種情況,並且在關閉新活動後,主活動將被銷燬,並且不會調用OnActivityResult監聽器。

有沒有辦法告訴系統「不要銷燬這個暫停的活動」?

編輯:

的問題是有點複雜,我怕我在我的應用程序的整個achitecture犯了不少錯誤。我會盡量解釋我做了什麼:

我有一個主要活動(extends TabActivity)和GlobalVars一個final public class GlobalVars 是存儲大量的變量或類,由項目如所有活動使用。 :

public static boolean system_initialized = false; 
public static boolean system_Onforeground = true; 
main.class OnCreate方法

,我設置system_initialized到trueOnResume方法我設置Onforeground = true,在設置Onforeground = falseOnDestroy設置initialized = false

如果我啓動應用程序system_initialized和Onforeground將是真實的,如果我開始ActivityforResult初始化將保持爲真,但Onforeground將被設置爲false。

現在我有一個BroatcastReceiver,啓動android.intent.action.BOOT_COMPLETED並初始化一個帶有服務的Alamrmmanager作爲pendingIntent。

現在我使用該服務來檢查每分鐘是否需要在主要活動中進行一些操作。如果發生操作,服務會檢查system_initialized = true(在GlobalVars中)是否啓動應用程序,否則服務將使用處理程序(在GlobalVars中)調用主活動中的Runnable。

這很好,如果主Activity正在運行,則可執行文件將被執行併發生某些事情,如果用戶啓動了ActivityforResult服務意識到主要活動不在onForeground上並在後臺執行某些操作。但是,如果主要活動被破壞,服務將重新啓動主要活動,我不希望那^^我知道,很奇怪,但我不知道如何以其他方式實現我需要的東西。 ..

回答

1

但是,當你回到你的活動將重新創建。
所有你需要做的就是使用onSaved實例和其他方式保存你的活動狀態。

你也可以把支票放在你的應用onLowMemory你得到的回撥。

請按照SO上的鏈接。
它可能會有幫助。

Handling DVM killing your activity