代码改变世界

Android的匿名Handler类引起的内存泄露

2013-05-16 01:13  清炒白菜  阅读(382)  评论(0编辑  收藏  举报

具体原因参考这篇博客
http://blog.chengyunfeng.com/?p=468

上文中虽然给出了解决方案, 但是在实际操作的时候, 还是遇到一些问题。 
比如在Activity中的Field字段, 原先用匿名handler类 , 是可以直接访问的, 现在改了之后, 在MyHandler类中不能直接访问了。

暂时想到的办法是, 强制转换WeakReference<Activity> mActivity中保存的类型。

Activity act = mActivity.get()
if ( act == null) return;
MainActivity actNew = (MainActivity)act;

这样可以用actNew来访问MainActivity中的Field字段了。