【发布时间】:2013-06-11 01:20:17
【问题描述】:
我正在使用异步任务并行下载多个文件(超过 10)(代码与 Main.java 位于不同的 .java 文件中)。
我生成了许多异步任务,每个任务大约每 2 秒调用一次 onProgress
在异步任务的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)
【问题讨论】:
-
好吧,您可以“不要”用您的下载内容填充整个通知栏,而是设置一个最大数量。例如,如果超过 5 次下载,只有一个通知显示整体进度以及有多少是活动的/已完成的,onClick 会将用户带到显示所有下载及其状态的活动/片段/某处?我认为没有人希望同时收到超过 5 或 10 个通知。
-
是的,它也可能是一个很好的解决方案。但我更喜欢用更简单的解决方案来解决它。如果通知栏真的不可能不滞后多个通知,那么我会使用你的建议。谢谢!
-
@tcboy88 这个答案对我有用:Answer
标签: java android notifications progress-bar