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

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

巴扎黑
巴扎黑

Antworte allen(3)
左手右手慢动作

当前的Activity,在其生命周期内,应该是被其他的强引用引用着不会被回收。
当其Destory后,其引用被一个弱引用引用着,然后在下一次的GC就会被回收了。

刘奇

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

PHPzhong

其实后面发现是自己理解错误,使用弱引用来保存Activity的引用是不会引起内存泄露的,也不会造成需要用的时候Activity的引用被回收了。题目中介绍的方法非常合适。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage