私はアクティビティを開始するためのこの特定のテクニックを見てきました。静的なコンテキストのために私には悪い考えがあるようですが、誰かがこのアプローチの背後に正当な理由があることを望んでいました。アクティビティコンテキストを静的メソッドに渡すと、メモリリークの可能性がありますか?
起動するアクティビティは、インテント、フラグなどを設定し、最後にアクティビティを開始する静的起動(コンテキストコンテキスト)メソッドを実装します。
public static void launch(Context context){
Intent i = new Intent(context, SomeOtherActivity.class);
// flag stuff
context.startActivity(i);
}
次に、DifferentActivityは1行でSomeOtherActivityを起動できます。
SomeOtherActivity.launch(DifferentActivity.this);
私はそれはあなたがそれを離れて発射されDifferentActivityからセットアップまでの活動のフラグを使用できますが、それは静的メソッドにその活動のコンテキストを渡す合理化するための良い十分な理由のように見えるdoes notの方法を好みます。
これで、DifferentActivityはガベージコレクションされませんでした。なぜなら、その静的メソッドには参照があるからです。これは私にはメモリリークのように思えますが、作成されているアクティビティに含まれているフラグを保持できるようにするのは良い考えではありません。
私はここで行方不明のものがありますが、これは良い練習になりますか?
いいえ 'static' * fields *は問題です。 'static'メソッドはそうではありません。 – CommonsWare