假设我在 Activity 类中有一个内部类 AsyncTask。 我必须在这个 AsyncTask 中有 weakRefeernce 吗?
此外,我是否必须始终为 AsyncTask 使用 weakReference?
最后,如果我将内部类 AsyncTask 声明为静态的,它安全吗?
最佳答案
是的,如果它是内部类或只是创建它自己的类,请始终将您的 Asynctask
声明为静态,尽量避免声明为非静态内部类,因为它会造成内存泄漏。 Read here for a more elaborate explanation why you should not do this
您不想使用 WeakReference
对于 Asynctask,因为 android 2.3+ 的垃圾收集器非常积极,并且会非常快速地收集所有弱引用。此外,弱引用通常不是线程的好模式,它更适合内存占用量大的对象,如位图(但在 android 中不再像之前所说的那样)。
来自 http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Starting from Android 2.3 (API Level 9) the garbage collector is more aggressive with collecting soft/weak references which makes them fairly ineffective.
关于Android - 内部类 AsyncTask 是否必须有 WeakReference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551484/