【发布时间】:2016-12-01 00:06:05
【问题描述】:
如果我有一个 AsyncTask 作为一个单独的类,并且我从一个 Activity 运行 AsyncTask,AsyncTask 是否会持有对 Activity 的引用,就像它是后者的内部类一样? 还是解决了内存泄漏的问题?
另外,将包裹在 WeakReference 中的上下文传递给 AsyncTask 是否会做出任何改变?
【问题讨论】:
-
是的,它将通过传递 Activity 的
context来保存对 Activity 的引用,类似于内部类。 -
你传递的上下文是什么包装在 WeakReference 中?
-
为避免内存泄漏,将上下文包装在 WeakReference 中。
-
所以基本上我们有两种解决内存泄漏的方法,对吧?第一个是静态内部类,第二个是传递给它的 WeakReference 的单独类
-
参考this链接以更好地理解@BVtp