這種代碼會導致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