AsyncTask可谓是在Android中隐藏很深,曾经叱咤风云的功夫级人物。它的存在让网络和UI的通信变得异常简单和轻松。AsyncTask使用上的简单也得以让很多开发者青睐。一般情况下,AsyncTask会作为内部类在Activity或者Fragment中实现,例如:
首先,我们知道Java语言是一种强类型,强引用的语言。在一个类中创建内部类时,内部类会默认对外部类持有引用。可以简单的理解为,外部类作为了一个寄托者将内部类绑定在了自己身上。我们知道Activity或者Fragment是有生命周期存在的。并且AsyncTask多用于处理耗时操作(数据库,IO读写,网络请求等等。。)此时,就会出现一个严重的问题:在Activity或者Fragment生命周期结束后,由于AsyncTask的耗时任务尚未完成,导致Activity或者Fragment无法释放资源。即发生我们经常所听到的 “内存泄漏”。