android - 使用 Handler 可能发生内存泄漏?

标签 android memory memory-management

这种代码会导致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实例仍然被全局消息队列强引用,所以这里可能存在内存泄漏。

我没看错吧?

最佳答案

我认为没有内存泄漏。 Runnable 将在 2 秒后被调用,此消息将从 MessageQueue 中删除。

关于android - 使用 Handler 可能发生内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196363/

相关文章:

objective-c - 尝试使用释放方法时发生编译器错误

c++ - 按值或指向 C++ 上动态分配的指针返回大型结构对象

android - 在 macOS sierra 10.12.3 上安装 appium

android - Viewpager 没有得到最后一项

android - Xamarin Forms 如何更改我在底部导航区域中使用的 png 图标的颜色?

sql - 转储到 CSV/Postgres 内存

java - 如何将 AttributeSet 动态添加到 TextView?

Javascript 字符串大小限制 : 256 MB for me - is it the same for all browsers?

c - linux上PPC64下一个进程可以有多少内存

iphone - 为什么我在 ARC 下比较桥接 CGColorRefs 时遇到崩溃?