欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Handler内存溢出解决方案

发布时间:2024/3/24 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Handler内存溢出解决方案 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Handler引起内存溢出,解决方案

1.介绍

public class SampleActivity extends Activity {private final Handler mLeakyHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// ... }} }

在使用handler时,这是一段很常见的代码。但是,它却会造成严重的内存泄漏问题。在实际编写中,我们往往会得到如下警告:
⚠ In Android, Handler classes should be static or leaks might occur.

2.引起内存溢出的原因

详细请参考:Android之Handler内存泄漏分析及解决

3.解决方案

/** * 创建时间:2016/2/25 11 : 10 * 项目名称:Heros * 类说明:此类主要用来解决Handler引起的内存溢出 * 创建人: lc * * @since JDK 1.7.0 * Copyright (c) lc-版权所有 */ public class WeakReferenceHandler<T extends Handler.Callback> extends Handler {private T handlerContainer;private Reference<T> handlerReference;public WeakReferenceHandler(T handlerContainer) {handlerReference = new WeakReference<>(handlerContainer);}public T getHandlerContainer() {return handlerReference.get();}@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);Callback container = getHandlerContainer();if (container != null) {container.handleMessage(msg);}} }

总结

以上是生活随笔为你收集整理的Handler内存溢出解决方案的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。