Maison > Questions et réponses > le corps du texte
安卓保存当前Activity http://droidyue.com/blog/2016...
这个第三种方法是我最满意的,在Application中采用registerActivityLifecycleCallbacks注册Activity声明周期回调,在resume回调中,使用弱引用保存Activity的引用,因为强引可能会引起内存泄露,但我觉得用弱引用也有问题,弱引用只要垃圾收集线程扫描到这个区域就会把内存回收,所以,如果弱引用指向的Activity被垃圾收集器回收了怎么办?
ringa_lee2017-04-18 09:16:24
L'Activité en cours, durant son cycle de vie, devra être référencée par d'autres références fortes et ne sera pas recyclée.
Lorsqu'il est Détruit, sa référence est référencée par une référence faible, puis il sera recyclé dans le prochain GC.
怪我咯2017-04-18 09:16:24
À en juger par la description actuelle du problème, je ne connais pas le scénario d'utilisation et le but de la question. Si ce que vous voulez est l'objet de l'activité actuelle, alors ce n'est pas grave si vous l'obtenez. faites, mais que voulez-vous ? Tenez un objet dans Application
et vous ne voulez pas le libérer... Le cycle de vie de Application
est aussi long que l'application Si vous tenez un objet avec un cycle de vie plus court. que vous, cela provoquera certainement une fuite de mémoire, de manière générale, registerActivityLifecycleCallbacks
Afin de faciliter la gestion de Activity
桟, il conserve la référence lorsque Activity 活动
et la supprime lorsque Activity Destroy
. provoquer des fuites de mémoire et peut également faire fonctionner l'activité en cours.
PHPz2017-04-18 09:16:24
En fait, j'ai découvert plus tard que j'avais eu un malentendu. L'utilisation de références faibles pour enregistrer les références d'activité ne provoquera pas de fuites de mémoire, ni le recyclage des références d'activité en cas de besoin. La méthode présentée dans la question est très adaptée.