Handler中的Android内存泄漏

时间:2018-11-02 09:27:37

标签: android memory-leaks handler android-progressbar

此功能使用计数值更新自定义进度,以便在10秒内开始,在0处停止,并且每毫秒将进度更新为流畅的。 (请注意,“ updateProgress”调用了invalidate()函数)

如果我使用正常的进度,没关系,我没有内存泄漏,但是如果我使用此代码,“ Android探查器”检查器中的内存将从60mb开始,但会增加并且不会停止。

>

我需要使用自定义进度。

有更好的实现方法吗?

private void testing(){
    count = 10000;
    final Handler handler = new Handler();
    final Runnable runnable = new Runnable() {
        public void run() {
            if (count > 0){
                updateProgress(count);
                handler.postDelayed(this, 1);
            }
            count--;
        }
    };
    handler.post(runnable);
}

1 个答案:

答案 0 :(得分:1)

1。。每100毫秒(最好1秒钟)使用处理程序,而不是1毫秒

private void testing(){
    count = 10000;
    final Handler handler = new Handler();
    final Runnable runnable = new Runnable() {
        public void run() {
            if (count > 0){
                updateProgress(count);
                handler.postDelayed(this, 100); //100 millsecond
            }
            count--;
        }
    };
    handler.post(runnable);
}

2。。请确保您在onstop中删除了处理程序回调

@Override
protected void onStop() {
    super.onStop();
   handler.removeCallbacks(runnable);
}