活動の間で共有静的変数のライフサイクルとは何ですか?

ジャック:

私が持っているBaseActivity、複数の活動、それを拡張します。

BaseActivityは、それが子孫の間で共有させる静的変数有するアクティビティ(それらはすべて共有それの同じインスタンス)。

静的変数のみによって初期化されるMainActivity(延びBaseActivityを)。

MainActivityは明示のために登録するBroadcastReceiver

BroadcastReceiverは、静的変数の値を変更します。

私は、システムが殺されている場合を確認するにMainActivity(メモリ不足のために、例えば)を、静的変数がnullにリセットし、設定されます。

私が言ったように、MainActivityの株式その他の静的のVAR 活動、そして、それは単に所有BroadcastReceiverをし、それが1を初期化静的VARです。

なしでBroadcastReceiver静的変数のデータは信頼性が低くなります。

今、あなたは全体のシナリオを持っています。質問へレッツ・GET:

この場合、共用静的VARのライフサイクルは何ですか?

DOES のAndroid(メモリ不足の場合は)個々の活動を破壊するか、それが私の全体のアプリ(全体の活動を)破壊するのでしょうか?

  • それは私のアプリを完全に破壊し、許容可能である静的VARをリセットすると、私の心配は、それが破壊されることをMainActivityを単独で、及び登録解除BroadcastReceiver、まだそれは、静的VARを(信頼性が失われます)保持します。

場合はAndroidが破壊する可能性がMainActivityを単独で静的VARを維持し、どのように私は、通知を得ることができ、またはその次の時間を意識するMainActivityの私は、静的なのVAR内の値をリロードすることができるように開始?

申し訳ありませんが、私は頼ることができないonDestroy()MainActivityあなたは場合に呼び出される保証はないです知っているように、nullに静的VARを設定するためにAndroidの低メモリでの活動を破壊しました。

良いです:

私は、システムは、(例えばメモリ不足のために)MainActivityを殺したかどうかわから、静的変数がnullにリセットし、設定されますようにしたいです。この場合、共用静的VARのライフサイクルは何ですか?

静的変数はにリセットされますnull延ばす他のすべての活動をするときだけBaseActivity殺される(それがすでに設定されています原因!= nullによってMainActivityおよび/またはBroadcastReceiver)。すべてのあなたの活動が広がるのでBaseActivity、変数リセットは全体のプロセスの終了時に起こるしようとしています。

(メモリ不足の場合には)ないAndroidのは、個々の活動を破壊するか、それが私の全体のアプリ(全体の活動を)破壊するのでしょうか?

この場合、Androidのは、全体のアプリのプロセスを破壊します。

Androidは一人でMainActivityを破壊し、静的VARを保つことができれば、どのように私は、通知を得ることができたり、私は静的のVAR内の値を再ロードすることができますので、次回MainActivityを開始するのに注意してください?

使用SharedPreferences該当する場合。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=212444&siteId=1