0

少し質問があります。AlarmManager を使用して特定の時間に通知を設定します。通知を設定した時間は、SQLLite データベースに保存されます。電話を再起動する瞬間を除いて、それらはすべて完璧に機能します。もちろん、alarmManagerは繰り返しを失います。

この状況で最善の解決策は何ですか?以下のコードでわかるように、alarmManager を MainActivity に設定し、BroadcastReceiver 内に通知を設定しました。

MainActivity から呼び出す方法は次のとおりです。

        Intent intent = new Intent(context, MyReceiver.class);
        intent.putExtra(EXTRA_TITLE, title);
        intent.putExtra(EXTRA_COUNT, count);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, count, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), WEEK_LENGTH_MS, pendingIntent);

そして、これがBroadcast ReceiverのメソッドonReceiveです

  public void onReceive(Context context, Intent intent)
    {
        nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        CharSequence from = context.getString(R.string.app_name);
        CharSequence message = intent.getStringExtra(DayActivity.EXTRA_TITLE);
        Intent intentNotification = new Intent(context,DayActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(context, intent.getIntExtra(DayActivity.EXTRA_COUNT,0), intentNotification, 0);
        Notification notif = new Notification(R.drawable.notification_logo,context.getString(R.string.app_name), System.currentTimeMillis());
        notif.setLatestEventInfo(context, from, message, contentIntent);
        notif.defaults |= Notification.DEFAULT_LIGHTS;
        notif.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
        nm.notify(intent.getIntExtra(DayActivity.EXTRA_COUNT,0), notif);

    }

BOOT_COMPLETEDイベントのBroadcastReceiverを宣言していますが、電話を開始したときに常に空の通知を呼び出し、それ以上は呼び出しません。

4

1 に答える 1

1

この状況で最善の解決策は何ですか?

あなたのスケジュールを再確立するBOOT_COMPLETED BroadcastReceiverために呼び出すためにsetRepeating()登録してください。AlarmManager

BOOT_COMPLETEDイベントのBroadcastReceiverを宣言していますが、電話を開始したときに常に空の通知を呼び出し、それ以上は呼び出しません。

の目的は、BOOT_COMPLETED BroadcastReceiverアラームのスケジュールを変更することです。BroadcastReceiverアラーム イベント自体に使用しているものとは別のものを使用することを検討することをお勧めします。

于 2014-10-18T13:46:56.303 に答える