recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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

巴扎黑巴扎黑2772 Il y a quelques jours387

répondre à tous(3)je répondrai

  • ringa_lee

    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.

    répondre
    0
  • 怪我咯

    怪我咯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.

    répondre
    0
  • PHPz

    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.

    répondre
    0
  • Annulerrépondre