3

我正在使用异步任务并行下载多个文件(超过10 个)(代码与 Main.java 位于不同的 .java 文件中)。
我产生了许多异步任务,每个任务将
在异步任务 onProgress 方法中每 2 秒调用一次 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 中的“通知”和“nm”声明并初始化为公共静态。(所以我可以在另一个 .java 文件中的异步任务中轻松调用它们)

public static Notification notification;
public static NotificationManager nm;

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

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

请注意,延迟不是由异步任务中的下载引起的。我试过下载,通知栏中没有显示通知,而且完全没有延迟。(Galaxy S3 四核 Exynos)

在此处输入图像描述

4

2 回答 2

0

为什么不只发出一个通知,其中包含有关所有下载的信息,例如总进度。

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

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

于 2013-06-14T12:19:40.980 回答
0

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

于 2013-06-14T11:51:55.000 回答