android - 安卓如何保存当前运行的Activity
巴扎黑
巴扎黑 2017-04-18 09:14:24
0
3
385

  安卓保存当前Activity http://droidyue.com/blog/2016...
  这个第三种方法是我最满意的,在Application中采用registerActivityLifecycleCallbacks注册Activity声明周期回调,在resume回调中,使用弱引用保存Activity的引用,因为强引可能会引起内存泄露,但我觉得用弱引用也有问题,弱引用只要垃圾收集线程扫描到这个区域就会把内存回收,所以,如果弱引用指向的Activity被垃圾收集器回收了怎么办?

巴扎黑
巴扎黑

全員に返信(3)
左手右手慢动作

現在のアクティビティは、ライフサイクル中、他の強参照によって参照される必要があり、リサイクルされません。
Destroyed の場合、その参照は弱い参照によって参照され、次の GC でリサイクルされます。

いいねを押す +0
刘奇

現在の問題の説明から判断すると、質問の使用シナリオと目的がわかりません。必要なものが現在のアクティビティのオブジェクトであれば、それを取得すれば問題ありません。 Application でオブジェクトを保持していますが、それを解放したくありません。Application のライフサイクルはアプリと同じ長さです。オブジェクトを保持している場合、そのライフサイクルは短くなります。一般的に、registerActivityLifecycleCallbacks桟の管理を容易にするために、アクティビティActivityのときに参照を保持し、アクティビティ活动のときに参照を削除します。メモリリークを引き起こし、現在のアクティビティを操作することもできます。Destroy

いいねを押す +0
PHPzhong

実際、後で誤解があったことが分かりました。弱い参照を使用してアクティビティ参照を保存しても、メモリ リークは発生せず、必要なときにアクティビティ参照がリサイクルされることもありません。質問で紹介された方法は非常に適しています。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート