android中处理内存泄漏,Android中的处理程序和内存泄漏

Timmmm..

11

这是我制作的一个有用的小课程,你可以使用.可悲的是,它仍然非常冗长,因为你不能拥有匿名的静态内部类.

import java.lang.ref.WeakReference;

import android.os.Handler;

import android.os.Message;

/** A handler which keeps a weak reference to a fragment. According to

* Android's lint, references to Handlers can be kept around for a long

* time - longer than Fragments for example. So we should use handlers

* that don't have strong references to the things they are handling for.

*

* You can use this class to more or less forget about that requirement.

* Unfortunately you can have anonymous static inner classes, so it is a

* little more verbose.

*

* Example use:

*

* private static class MsgHandler extends WeakReferenceHandler

* {

* public MsgHandler(MyFragment fragment) { super(fragment); }

*

* @Override

* public void handleMessage(MyFragment fragment, Message msg)

* {

* fragment.doStuff(msg.arg1);

* }

* }

*

* // ...

* MsgHandler handler = new MsgHandler(this);

*/

public abstract class WeakReferenceHandler extends Handler

{

private WeakReference mReference;

public WeakReferenceHandler(T reference)

{

mReference = new WeakReference(reference);

}

@Override

public void handleMessage(Message msg)

{

if (mReference.get() == null)

return;

handleMessage(mReference.get(), msg);

}

protected abstract void handleMessage(T reference, Message msg);

}

if(mReference.get()== null)返回; handleMessage(mReference.get(),msg); 这是一个糟糕的方法,因为在null检查和handleMessage之间,引用仍然可能是gc'ed导致空指针异常,因此它是一种更好的方法来将返回值存储在T reference = mReference.get(); 然后检查null并将局部变量传递给handleMessage方法. (4认同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值