わかりました、この厄介な問題はおそらく非常によく知られていますが、それが何と呼ばれているのか、どのように解決するのかわかりません. アプリを開いてメニューに移動し、しばらくしてからアプリを再開すると、すべてのデータが失われます。Android は、OS を可能な限り高速かつ安定に保つために、データをきれいにするのが好きなようです。アプリを再開する前に、内部メモリにデータを保存し、何らかの変数が消去された/nullになったときにデータを取得するために推奨される方法はどれですか? setSharedPreferences を使用して ArrayList をオブジェクトに解析し、オブジェクトを文字列として解析してデータを保存して取得しようとしましたが、オブジェクトを文字列に解析できないという例外が発生します。より良い代替手段が必要です。
どんな助けでも大歓迎です。
編集:
これは、データを取得して保存する方法です。
JSONObject data = (JSONObject) new JSONTokener(result).nextValue();
Helper.RAW_PEOPLE_INFO = data.getJSONArray("people");
Helper.PEOPLE_CONTAINER = new ArrayList<PeopleInfoStorage>();
for( int i = 0; i < Helper.RAW_PEOPLE_INFO.length(); i++ ){
Helper.PEOPLE_CONTAINER.add( new PeopleInfoStorage(Helper.RAW_PEOPLE_INFO.getJSONObject(i)) );
}
PEOPLE_CONTAINER ArrayList を使用して、後で必要なときに使用します。PEOPLE_CONTAINER ArrayList は、アプリケーションを再開する前におそらく消去されるため、この ArrayList を内部メモリに格納する方法の例を誰かが教えてくれるので、内部メモリからデータを取得して PEOPLE_CONTAINER ArrayList に戻すことができます。またヌルです。
次のようにする必要があります。
@Override
protected void onPause() {
if( Helper.PEOPLE_CONTAINER != null ){
//save the Helper.PEOPLE_CONTAINER ArrayList to the internal memory
}
super.onPause();
}
@Override
protected void onResume() {
if( Helper.PEOPLE_CONTAINER == null ){
//retrieve the data and store it back to Helper.PEOPLE_CONTAINER ArrayList
}
super.onResume();
}