Androidアクティビティでは、そのアクティビティで静的として宣言されているArrayListを入力しています。このデータ構造は、後でアプリケーションの実行中に他のアクティビティによって次のようにアクセスされます。
ClassName.data_structure_name;
私の質問は、この方法で安全に実行できるかどうか、またはAndroidがメモリの構造などをクリアできるかどうかです。
Androidアクティビティでは、そのアクティビティで静的として宣言されているArrayListを入力しています。このデータ構造は、後でアプリケーションの実行中に他のアクティビティによって次のようにアクセスされます。
ClassName.data_structure_name;
私の質問は、この方法で安全に実行できるかどうか、またはAndroidがメモリの構造などをクリアできるかどうかです。
はい、AndroidはここでActivity
説明されているようにあなたを処分することができます。
アクティビティが一時停止または停止した場合、システムは、アクティビティを終了するように要求するか(finish()メソッドを呼び出す)、または単にプロセスを強制終了することによって、アクティビティをメモリから削除できます。アクティビティを再度開くとき(終了または強制終了後)、全体に作成する必要があります
しかし、これはActivity
インスタンス用です。静的な場合は、クラスがDalvik VMからアンロードされArrayList
ない限りドロップされません(個人的にはこれが発生するのを見たことがありません)。Activity
とにかく、私見それは良いデザインではありません(私は過去にそれを使用しました)。静的を格納するために別のクラスを使用することをお勧めしますArrayList
。マルチスレッドとを使用することの短所 に注意してください。Singletons
ArrayListにさまざまなアクティビティからアクセスする必要がある場合は、Activityクラスではなく、別のクラスに配置する必要があると思います。
疑問に思っているのであれば、データはさまざまなプロセス間で保持されないため、おそらくエラーが発生するだけです。IE、クラスの静的メンバーは永続ストレージではありません。
ただし、これらの後のアクティビティが同じプロセス内にある場合は、指定したとおりにアクセスできます。
この設計に関するいくつかの問題。
あるソースからデータを取得し、それを配列リストに入れていると思います。配列リスト全体が必要ない場合は、バンドル内の値を渡すだけです。
後続のアクティビティで配列リスト全体が必要な場合は、最初に取得した方法で配列リストを再入力します。
静的アクセスは、OOP設計には適していません。ログタグを印刷するための次の場合を除いて、Androidアプリのどこでも静的を使用しません。
public static final String TAG="MY_TAG";
シングルトンでさえ非常に議論の余地があります。