1

ローカル通知用のプラグインを備えた Cordova アプリがあります。問題は、cancelAll()完了するまで待たないため、新しいメッセージを追加している間にまだ削除されていることです。

cancelAll()スレッドを同期して待機させるにはどうすればよいですか?

関連するコードAlarmHelper::cancelAll()

/**
 * @see LocalNotification#cancelAllNotifications()
 */
public boolean cancelAll(SharedPreferences alarmSettings) {
    final Map<String, ?> allAlarms = alarmSettings.getAll();
    final Set<String> alarmIds = allAlarms.keySet();

    for (String alarmId : alarmIds) {
        Log.d(LocalNotification.PLUGIN_NAME, "Canceling notification with id: " + alarmId);
        String alarmInt = alarmId;
        cancelAlarm(alarmInt);
    }

    return true;
}
4

1 に答える 1

0

スレッドを同期して cancelAll() を待機させるにはどうすればよいですか?

できません。cancelAll()非同期です。

問題は、cancelAll() が終了するまで待機しないため、新しいメッセージを追加している間もまだ削除されていることです。

cancelAll()そもそもなんで電話してんの?通知をその場で更新します。

また、フォームが悪いと見なされるため、複数の通知を送信しないでください。すべての未処理の「メッセージ」に対して1 つの通知を行います。この通知は、ユーザーがそれらの「メッセージ」に対してアクションを実行したとき (たとえば、受信トレイにアクセスしたとき) にクリアされます。

于 2013-02-19T15:02:21.360 に答える