2015-12-02 68 views
0

我有一個應用程序在Play商店中運行,我遇到了一個Android操作系統殺死我的應用程序的問題。如果操作系統殺死了應用程序,處理應用程序活動

Scenario/Steps : 

1) Open app, move to any screen. 
2) Minimise the app by clicking HOME button. 
3) Open several other apps.(say 14 to 15 apps). 
4) And now launch my app it CRASHES!!!!. 

我已經注意到是從應用程序啓動畫面開始,而不是從它留下的地方開始,因爲我的所有數據都將丟失它給了我NULL指針異常。

理想情況下,我的應用程序應該從啓動畫面開始,因爲我將所有數據加載到那裏並將其他活動傳遞給它。

如何檢查我的應用程序是否被殺死並從閃屏加載?

我有擴展的應用程序類,但我不知道如何使用它。

+0

操作系統可以摧毀你的應用程序隨時需要的內存,你的說法,當你再次點擊啓動它殺死你的應用程序後,它並沒有去爲y我們的啓動畫面? – j2emanue

+0

@ j2emanue這是正確的,但在這種情況下,我希望我的應用程序從啓動畫面開始。 – user2056563

+0

這就是結束如何使用靜態變量作爲商店在android – Selvin

回答

0

我想你可能會使用靜態變量,只是一個預感。反正你能在你的mainActivity的onCreate或的onResume試試這個:

if (isTaskRoot()) { 
    // This activity is at root of task, so launch main splash screen 
} else { 
    // This activity isn't at root of task, so continue 
} 

但是那從真正的問題越來越遠,我認爲:相反,我會考慮在的onSaveInstanceState Activity類:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    // Save the user's current state 
    savedInstanceState.putString("myStaticVariable", sStaticVariableAreBad); 
    // Always call the superclass so it can save the view hierarchy state 
    super.onSaveInstanceState(savedInstanceState); 
} 

然後在的onCreate檢查活動之前被破壞:

// Check whether we're recreating a previously destroyed instance 
if (savedInstanceState != null) { 
    // Restore value of members from saved state 
    sStaticVariableAreBad = savedInstanceState.getString("myStaticVariable"); 

} 
+1

謝謝,但isTaskRoot()是什麼?我如何使用它? – user2056563