2017-10-13 14 views
1

私はアクティビティを持っています。アクティビティは、作成時にデータベースからデータをダウンロードします。データは、myDataというカスタムArrayListに格納されます。別のアクティビティを起動する以前のアクティビティでarraylistに起こること

ユーザーがボタンをクリックすると、Bという別のアクティビティが起動されます。アクティビティAは、アクティビティBにいくつかのデータを渡します。アクティビティBは、クラスをパーセル可能に実装することによって実行できます。

アクティビティAがonPauseまたはonStopのいずれかの状態になるアクティビティBがあると、私は理解しています。私の質問は、アクティビティBが閉じられ、アクティビティAにフォーカスが戻っても、私のarraylist myDataはまだ存在するのでしょうか?このデータを保存するにはどうすればいいですか?

+1

アクティビティがonPause()にとどまっている場合 - 「ユーザがアクティビティに戻る」の場合、問題はありません。しかし、それがonStop()にある場合、つまり、 "ユーザがアクティビティにナビゲートする"場合、次に呼び出されるメソッドはonRestart()になります。そして、ArrayListは新たに再作成されます(以前の値は失われます)。 –

+0

@ModularSynthアクティビティAがonStop状態になる場合。 ArrayListデータを保持する方法はありますか?私。 arrayList onRestartを再作成したくないのですか? – mHelpMe

+0

あなたのアクティビティをkillして再起動しない場合(onCreate()メソッドを渡さないでください)、おそらくyesです。しかし、ArrayListをファイルにシリアル化する方が安全です。念のため。あなたが知っている、これらの面白いユーザー...彼らはデバイスを回転させるのが大好きです。 –

答えて

1

はい、finish()メソッドを使用してActivityBを終了することができます。 ActivityAに戻ると、arrayListのデータが存在します。そして、私はActivityAのインスタンス変数としてarrayListを宣言し、onCreate()メソッドでデータをフェッチすることを提案します。アクティビティーが破棄されるまでデータが存在するため、アクティビティーが集中したときにデータが再度フェッチされません。

2

新しいアクティビティを起動すると、直前のアクティビティはonStop状態になります。

onStopの定義: 別のアクティビティが再開されており、これを覆っているため活性が、もはやユーザに表示されたときに呼び出さない

。これは のいずれかが発生する可能性があります。新しいアクティビティが開始されているか、既存のアクティビティがこの1つ前に持ち込まれているか、またはこのアクティビティが破棄されているためです。

enter image description here

このチャートを参照してくださいあなたが戻っActivityAに行くとき今、配列データがまだ存在することになります。したがって、アクティビティの切り替えが行われると、アクティビティAが再び開始されると、このデータは破棄されずに再作成されません。

関連する問題