更新太多通知导致滞后,如何改进呢?

时间:2013-06-14 11:42:03

标签: java android notifications progress-bar

我使用异步任务并行下载多个文件(超过 10 )(代码与Main.java不同.java文件)。
我产生了许多异步任务,每个任务将每2秒调用onProgress 在Async任务onProgress方法中,它将更新通知栏中的文本和进度条

Main.notification.contentView.setProgressBar(R.id.status_progress, 100, percentCompleted, false); // percentCompleted is calculated
Main.notification.contentView.setTextViewText(R.id.status_text, title);
Main.nm.notify(value, Main.notification);

请注意,我将Main.java中的“notification”和“nm”声明并初始化为public static。 (所以我可以在另一个.java文件中的异步任务中轻松调用它们)

public static Notification notification;
public static NotificationManager nm;

当我同时下载 5 文件时,它仍然可以正常工作(没有明显的延迟)。
但是,当我并行下载超过 10 文件时,通知栏会变得非常滞后 它甚至在我同时下载 20 文件并且出现错误时发生了崩溃“不幸的是系统ui已停止”,我的通知栏完全消失(必须重新启动手机)。

更新这样的多个通知的更好方法是什么,但没有延迟?

请注意,延迟不是由异步任务中的下载引起的。我已尝试下载而不在通知栏中显示通知,并且它没有任何延迟。 (Galaxy S3 Quad Cores Exynos)

enter image description here

2 个答案:

答案 0 :(得分:0)

请注意,如果您将AsyncTasks称为:as.execute();,则它们不会并行运行。为此,您需要:as.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR))

答案 1 :(得分:0)

为什么不制作一个包含所有下载信息的通知,例如总进度。

点击多次下载通知会显示新的Activity,其中会显示有关各个下载的详细信息。

我个人认为用户不喜欢这么多通知,并且评估者看到它合并为一个。