Android内存泄漏处理程序
此函数使用计数值更新自定义进度,以便在10秒内开始,在0时停止,并且每毫秒更新一次进度。(注意,“updateProgress”调用invalidate()函数) 如果我使用正常进度,没关系,我没有内存泄漏,但如果我使用此代码,“Android profiler”检查器中的内存开始为60mb,但它会增加,并且不会停止 我需要使用自定义进度 有更好的方法来实现它吗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
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