这种代码会导致Android内存泄漏吗?使用处理程序可能的内存泄漏?
class MyActivity extends Activity {
Runnable myRunnable =new Runnable() {
public void run() {
// Do something here
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
Handler = new Handler();
Handler.postDelayed(myRunnable, 2000);
}
}
在上面的代码,myRunnable具有较强的参考MyActivity,并加入myRunnable到线程消息队列。当MyActivity关闭时,MyActivity实例仍然被全局消息队列强引用,因此可能存在内存泄漏。
我理解它吗?
是否有可运行的卡在消息队列中的任何可能性? – Kai
我觉得没有。看看'Looper.loop()'和'MessageQueue.next()'的实现。 – Michael