【问题标题】:Manually clear context reference when activity is destroyed销毁活动时手动清除上下文引用
【发布时间】:2017-03-05 02:51:06
【问题描述】:

我有一个扩展 WebViewClient 的 BaseWebViewClient 类。我用它来为我的不同片段和活动中的所有 web 视图(如 uri 方案等)设置我想要的通用内容。这个类需要一个上下文引用来访问一些资源。我在构造函数中传递它并将其设置为成员变量,生活很好。

问题变成了,我应该如何处理在这种情况下防止内存泄漏?我可以只创建一个 clearClient() 方法,将 mContext 变量设置为 null 并在 frag/activity 的 onDestory() 中调用它吗?似乎是一个简单的解决方案,只是感觉我错过了一些东西。这似乎是一件好事,还是有更好的方法来处理这个问题,而不必记住在活动中调用 clearClient 方法?

【问题讨论】:

    标签: java android android-activity garbage-collection android-context


    【解决方案1】:

    将应用程序上下文传递给它。或者在传入的上下文上调用 getApplicationContext。您可以放心保存。在极少数情况下这还不够好。

    【讨论】:

    • 我以前也见过这种方法。我唯一担心使用这种方法是它会阻止客户端对象被 GC 直到应用程序被杀死?
    • 没有。你那里的链接反转了。持有对另一个对象的引用永远不会阻止持有者被 gced。只有将您的推荐信保存在其他地方。
    • 哦,好吧,我没有意识到是这样的。现在更有意义了!谢谢!
    • getApplicationContext() 可能不适合 Dialog 等 UI 操作
    猜你喜欢
    • 1970-01-01
    • 2014-04-19
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多