2017-01-20 4 views
0

最近Androidアプリを初めて作成しました。これは、IRLカードゲームで2つのチームの得点を維持するための2つのカウンターを持つ、とてもシンプルなアプリです。とにかく、ユーザーが他のアプリを訪問することを選択している場合、アプリをexのように開いている。 whatsappをチェックして、アプリをバックグラウンドで実行させても大丈夫です...ユーザーが長い時間アプリを離れている場合、アプリはデフォルト状態にリセットされる傾向があります。 0にリセットすると非常にイライラします。これが起こらないようにする方法はありますか?ユーザーの返事やそれに類することがない限り、アプリの状態をメモリに保存するのはどうですか?アプリケーションカウンターは、基本的なTextviewオブジェクトです。前もって感謝します!アイドルタイムの後にAndroidアプリがリセットされる

答えて

0

プロセスの終了を停止することはできません。プロセスが終了した後でもそのデータを存続させたい場合は、SharedPreferencesなどのデータベースにデータを保存してください。

+0

あなたが終了されることからプロセスを防ぐことができます。https://developer.android.com/guide/components/services .html#フォアグラウンドですが、これはおそらくこのユーザーが望むものではありません。 – 01BTC10

+0

@ 01BTC10:これは、プロセスが固執する可能性が高くなるだけです。これは保証ではなく、プロセスを終了させる方法もあります。 – CommonsWare

0

状態は、savedInstanceState変数を使用して保存/復元できます。

@Override public void onCreate(Bundle savedInstanceState) { } 

https://developer.android.com/guide/components/activities/activity-lifecycle.html

次に、ユーザはonPause()、onStop()イベントが呼び出される別のアプリを使用しています。しばらくすると、OSはメモリを解放してonDestroy()を呼び出します。これは、いかなる状態も保存する最後のチャンスです。

+0

この状態は、しばらく続きます(〜30分程度)。それは十分かもしれません。 – CommonsWare

0

あなたがonSaveInstanceStateとonRestoreInstanceState

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 

    savedInstanceState.putInt("int", 1); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    int myInt = savedInstanceState.getInt("int"); 
} 

またはライブラリを使用を実装する必要があります。IcePick

+0

ありがとうございます。これをどうやって使うのですか?これを私のコードに入れてもいいですか?私はこれを初めて知って申し訳ありませんし、コードは私には馴染みのないように見えます。 – Hackermaan

+0

はい、使用できますが、独自の変数を設定できます。 ここにsavedInstanceState.putInt( "int"、1); ここと int myInt = savedInstanceState.getInt( "int"); –

関連する問題