2

私のアプリでは、アラームを設定し、ステータス バーに通知を表示する必要があります。スケジュールされたイベントをデータベースに保存し、通知が表示されたらイベントを削除します。

デバイスの電源をオフにして、もう一度オンにすると。ベースのリストは存在しますが、アラーム イベントはトリガーされません。デバイスの電源を切ると、保留中のイベントがキャンセルされたようです。

これを防ぐ方法は?デバイスがオンになっているときはいつでも通知を表示する必要があり、アラームの時間が来ます。

これは私がアラームを設定する方法です:

    Intent intent = new Intent(activity, TimeAlarm.class);
    intent.putExtra(SHOW_NAME, showName);
    intent.putExtra(SHOW_START_TIME, showStartTime);
    intent.putExtra(CHANNEL_NAME, channelName);
    intent.putExtra(VIBRATION_ENABLED, isVibrate);
    intent.putExtra(SOUND_ENABLED, isSound);

    int alarmId = (int) System.currentTimeMillis();

    intent.putExtra(ALARM_ID, alarmId);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(activity,
            alarmId, intent, PendingIntent.FLAG_ONE_SHOT);

    am.set(AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis() + delayMilis, pendingIntent);

マニフェストファイルには、これだけがあります:

 <receiver
        android:name="com.moleandroid.tvprogramgui.alarm.TimeAlarm"
 /receiver>

TimeAlarm クラスは私の受信機であり、そこからステータス バーに通知を表示します。

何が問題なのですか?

4

1 に答える 1

1

ここで、この問題を解決するために必要なことを説明します。通常、デバイスの電源がオフになると、アラームのすべてのpendingIntentがキャンセルされるため、デバイスが再びオンになっている間はトリガーされません。デバイスがオフ/オンになっている間、アラームアプリケーションが内部で行うことは、イベントを登録するためのサービスを開始します

このリンクを参照して、コードにシャットダウンと電源投入のインテントを実装します。したがって、デバイスの電源がオンになっている場合は、すべてのイベントをAlarmManagerにスケジュールし、これが機能すると確信しています。

ユーザーがデバイスの電源を切ったときに通知を受け取る方法はありますか?

于 2012-11-29T08:33:38.140 に答える