这种代码会导致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实例仍然被全局消息队列强引用,因此这里可能存在内存泄漏。
我明白了吗?
答案 0 :(得分:1)
我认为没有内存泄漏。系统会在2秒后调用Runnable
,此消息将从MessageQueue
中删除。
答案 1 :(得分:0)
实际上,消息可能会卡在队列中。
如果你的MyRunnable中有一个长时间运行的操作将有activity.finish()系统将没有时间从队列中删除你的消息,它将在你下次运行你的活动时执行(假设完成( )没有完全关闭你的应用程序)
作为避免内存泄漏的好习惯,请尝试使内部类静态