Android内存泄漏处理程序

Android内存泄漏处理程序,android,memory-leaks,handler,android-progressbar,Android,Memory Leaks,Handler,Android Progressbar,此函数使用计数值更新自定义进度,以便在10秒内开始,在0时停止,并且每毫秒更新一次进度。(注意,“updateProgress”调用invalidate()函数) 如果我使用正常进度,没关系,我没有内存泄漏,但如果我使用此代码,“Android profiler”检查器中的内存开始为60mb,但它会增加,并且不会停止 我需要使用自定义进度 有更好的方法来实现它吗 private void testing(){ count = 10000; final Handler handle

此函数使用计数值更新自定义进度,以便在10秒内开始,在0时停止,并且每毫秒更新一次进度。(注意,“updateProgress”调用invalidate()函数)

如果我使用正常进度,没关系,我没有内存泄漏,但如果我使用此代码,“Android profiler”检查器中的内存开始为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。每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);
}

为什么每1毫秒发布一次?使用30-40ms而不是1ms-但老实说,你应该使用
Choreographer
TimeAnimator
来完成这样的事情。我在片段或活动中找不到顶层功能?我在活动中它是活动生命周期中的方法之一,如
onCreate