2017-03-15 167 views
1

當我的應用程序被其他進程終止時,我可以防止應用程序恢復嗎?當從後臺恢復時重新啓動應用程序

我有問題,我有Singleton類實例在Application class,它通過應用程序持有我關於用戶和東西從API收集的所有信息。當我從後臺打開應用程序(如果它被某個進程殺死),我在用戶模型(圖片路徑,名稱...)和應用程序壓縮上獲得null

對我來說最好的方式就是從啓動屏幕重新啓動應用程序,並重新獲得所有信息,而不是恢復。任何解決方案?

+0

你能告訴你如何使用的usermodel內部重新創建活動/片段? –

+0

https://developer.android.com/guide/components/activities/index.html下的所有章節 – samosaris

回答

0

我可以防止應用程序在被其他進程殺死時恢復嗎?

有三種方法的應用可以是 「恢復」,通過調用要麼onCreateonStart,或onResume。哪一個被調用取決於你的應用程序如何被「暫停」,以及在這種狀態下發生了什麼。

onResume如下,其中當另一個應用被帶到前景發生。

onStartonRestart)如下onStop,當你的應用程序將不再可見時發生。

onCreate如下onStop如果你的內存是輸給了另一個應用程序。

當我打開應用程序從背景(如果它是由某個進程殺死)用戶模型我 越來越空值(圖片的路徑,名稱...)

嘗試在onSaveInstanceState堅持這個用戶數據

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putString(STATE_USER, mUser); 
    // Always call the superclass so it can save the view hierarchy state 
    super.onSaveInstanceState(savedInstanceState); 
} 

和恢復它在任一onCreateonRestoreInstanceState

static final String STATE_USER = "user"; 
private String mUser; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Check whether we're recreating a previously destroyed instance 
    if (savedInstanceState != null) { 
     // Restore user data from saved state 
     mUser = savedInstanceState.getString(STATE_USER); 
    } 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onRestoreInstanceState(savedInstanceState); 
    text.setText(savedInstanceState.getString(STATE_USER)); 
} 
相關問題