搜尋

首頁  >  問答  >  主體

android - 安卓如何保存当前运行的Activity

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

巴扎黑巴扎黑2772 天前386

全部回覆(3)我來回復

  • ringa_lee

    ringa_lee2017-04-18 09:16:24

    目前的Activity,在其生命週期內,應該是被其他的強引用引用著不會被回收。
    當其Destory後,其引用被一個弱引用引用著,然後在下一次的GC就會被回收了。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 09:16:24

    目前的問題描述來看我不清楚題主的使用場景和目的.如果你要的是當前Activity的對象,那你拿到了就ok了,該做些什麼操作就去做,但是你想在Application中持有一个对象还不想释放...Application的生命周期和app一样长,你持有一个生命周期比你短的对象,肯定会造成内存泄漏.一般来说registerActivityLifecycleCallbacks是为了方便管理Activity桟,在Activity 活动时持有引用,在 Activity Destroy的時候去掉.這樣就不會造成內存洩漏,也能操作當前的Activity.

    回覆
    0
  • PHPz

    PHPz2017-04-18 09:16:24

    其實後面發現是自己理解錯誤,使用弱引用來保存Activity的引用是不會引起內存洩漏的,也不會造成需要用的時候Activity的引用被回收了。題目中介紹的方法非常適合。

    回覆
    0
  • 取消回覆