我正在使用异步任务(代码在不同的.java文件中)并行下载多个文件(超过10个)。
我会生成许多异步任务,每个任务大约每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中将"notification"和"nm"声明并初始化为公共静态变量。(这样我就可以轻松地在另一个.java文件中的异步任务中调用它们)
public static Notification notification;
public static NotificationManager nm;
当我同时下载约5个文件时,仍然可以正常工作(没有明显的延迟)。但是当我同时下载超过10个文件时,通知栏变得非常缓慢。当我同时下载20个文件时,它甚至会崩溃,并显示错误“很遗憾,系统 UI 已停止”,我的通知栏完全消失了(必须重新启动手机)。
有没有更好的更新多个通知的方法,但又不会出现延迟呢?
请注意,延迟不是由异步任务中的下载引起的。我尝试过在通知栏中不显示通知进行下载,结果完全没有延迟。(Galaxy S3 四核 Exynos)