安卓保存当前Activity http://droidyue.com/blog/2016...
这个第三种方法是我最满意的,在Application中采用registerActivityLifecycleCallbacks注册Activity声明周期回调,在resume回调中,使用弱引用保存Activity的引用,因为强引可能会引起内存泄露,但我觉得用弱引用也有问题,弱引用只要垃圾收集线程扫描到这个区域就会把内存回收,所以,如果弱引用指向的Activity被垃圾收集器回收了怎么办?
安卓保存当前Activity http://droidyue.com/blog/2016...
这个第三种方法是我最满意的,在Application中采用registerActivityLifecycleCallbacks注册Activity声明周期回调,在resume回调中,使用弱引用保存Activity的引用,因为强引可能会引起内存泄露,但我觉得用弱引用也有问题,弱引用只要垃圾收集线程扫描到这个区域就会把内存回收,所以,如果弱引用指向的Activity被垃圾收集器回收了怎么办?
目前的问题描述来看我不清楚题主的使用场景和目的.如果你要的是当前Activity的对象,那你拿到了就ok了,该做些什么操作就去做,但是你想在Application
中持有一个对象还不想释放...Application
的生命周期和app一样长,你持有一个生命周期比你短的对象,肯定会造成内存泄漏.一般来说registerActivityLifecycleCallbacks
是为了方便管理Activity
桟,在Activity 活动
时持有引用,在 Activity Destroy
的时候去掉.这样就不会造成内存泄漏,也能操作当前的Activity.
2 回答1.3k 阅读✓ 已解决
2 回答2.7k 阅读
2 回答1.8k 阅读
1 回答2.1k 阅读
1 回答1.2k 阅读
1 回答1.3k 阅读
1 回答601 阅读✓ 已解决
当前的Activity,在其生命周期内,应该是被其他的强引用引用着不会被回收。
当其Destory后,其引用被一个弱引用引用着,然后在下一次的GC就会被回收了。