Android通知进度条冻结

时间:2011-06-17 18:17:43

标签: java android notifications progress-bar

这是我正在使用的代码

http://pastebin.com/3bMCKURu

问题是经过一段时间后(文件变得越来越重)通知栏下拉速度越来越慢,最后它就冻结了!

3 个答案:

答案 0 :(得分:5)

我遇到了类似的问题,看起来RemoteViews有内存泄漏,不应该重复使用。

看看这些主题:

android memory leak in notification service

http://code.google.com/p/android/issues/detail?id=13941

http://groups.google.com/group/android-developers/browse_thread/thread/667343a171e51463#

祝你好运

答案 1 :(得分:4)

这是一种常见的行为。您不应该频繁更新NotificationManager。您应该决定更新的时间间隔,例如每秒两次。

例如,

long startTime;
long elapsedTime = 0L;

if (elapsedTime > 500) {
                    new Handler(Looper.getMainLooper()).post(new Runnable() {
                        @Override
                        public void run() {
                            mBuilder.setProgress(100, (int) newValue, false);
                            mNotifyManager.notify(notificationID, mBuilder.build());

                            startTime = System.currentTimeMillis();
                            elapsedTime = 0;
                        }
                    });

                    Log.d("Andrognito", newValue + "Progress");
                }
                else
                    elapsedTime = new Date().getTime() - startTime;

这对我来说非常有效,也不会冻结通知。希望这有帮助!

答案 2 :(得分:2)

您的通知太频繁了。这就是冻结的原因。让它们以更大的间隔更新。好的是每秒或2秒一次。