此功能使用计数值更新自定义进度,以便在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);
}
答案 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);
}