どこでもアクティビティ/アプリケーションが必要なことについて少し問題があります...
より正確には、次のように定義されたクラスがあります。
public class MyApp extends Application {
private static Activity currentActivity;
private static MyApp instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static void setCurrentActivity(Activity activity) {
currentActivity = activity;
}
}
そして、私は次のような拡張アクティビティを持っています:
public class MyActivity extends Activity {
....
@Override
public void onResume() {
super.onResume();
MyApp.setCurrentActivity(this);
}
....
@Override
public void onDestroy() {
super.onDestroy();
MyApp.setCurrentActivity(null); // for nullifying static reference
}
}
私の質問は次のとおりです。
- 上記のコード スニペットは公平ですか?
- アクティビティが正常に参照および破棄されていないことを確認するため
super.onDestroy();
に、の後に使用する必要がありますか?MyApp.setCurrentActivity(null);
- そして最も重要なのは、static reference instanceはどうですか? GC を妨げないようにどこで無効にできますか?
ありがとう。