3

Async タスクを使用して複数のファイル ( 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 の "notification" と "nm" を public static として宣言し、初期化していることに注意してください。(そのため、別の .java ファイルにある非同期タスクで簡単に呼び出すことができます)

public static Notification notification;
public static NotificationManager nm;

5 つのファイルを並行してダウンロードしている場合でも、正常に動作しています (明らかな遅延はありません)。しかし、 10 個
を超えるファイルを並行してダウンロードすると、通知バーが非常に遅くなります。エラー「残念ながらシステムUIが停止しました」と並行して20個のファイルを ダウンロードしているときにクラッシュし、通知バーが完全に消えました(電話を再起動する必要があります)。

このように複数の通知を遅延なく更新するより良い方法は何ですか?

遅延は非同期タスクでのダウンロードによるものではないことに注意してください。通知バーに通知を表示せずにダウンロードを試みましたが、遅延はまったくありません。(Galaxy S3 クアッドコア Exynos)

ここに画像の説明を入力

4

2 に答える 2

0

AsyncTasks を次のように呼び出すとas.execute();、それらは並行して実行されないことに注意してください。そのためには、次のことが必要です。as.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR))

于 2013-06-14T11:51:55.000 に答える