2017-03-15 13 views
1

他のプロセスでアプリが強制終了されたときに再開できないようにすることはできますか?バックグラウンドから再開するときにアプリを再起動する

私はSingletonクラスインスタンスをApplication classに持っているのですが、それはユーザーとスタッフについてのすべての情報をAPIから集めてアプリを通じて保持しています。バックグラウンドからアプリを開くと(あるプロセスで殺された場合)、ユーザーモデル(画像パス、名前など)にnullが表示され、アプリがクラッシュします。

私にとって最良の方法は、アプリがランチャー画面から再起動し、すべての情報を再度取得し、再開しないことです。これに対する解決策はありますか?

+0

あなたはアクティビティ/フラグメントを再作成の内側UserModel使用しない方法を示していますができますか? –

+0

https://developer.android.com/guide/components/activities/index.htmlのすべてのセクション – samosaris

答えて

0

他のプロセスでアプリが強制終了されたときにアプリが再開するのを防ぐことができますか?

アプリはonCreateonStart、またはonResumeのいずれかを呼び出して、 "再開" することができる3つの方法があります。どちらが呼び出されるかは、アプリがどのように「中断」されたか、この状態ではどうなるかによって異なります。

onResume別のアプリがフォアグラウンドに持って来られたときに発生する、に従います。

onStartは(onRestart)アプリケーションが見えなくなるとき発生しない、onStopに従います。

onCreateあなたのメモリを別のアプリに失われた場合またはonStopに従います。

(それはいくつかのプロセスによって殺されたなら)私は、背景からアプリを開くIユーザーモデルに なっヌル(ピクチャー・パス、名前...)

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); 
} 

onCreate又は01のいずれかでそれを復元します

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)); 
} 
関連する問題