Тревога срабатывает только когда я в деятельности, которая его установила - PullRequest
1 голос
/ 31 января 2011

Я создаю сигнал тревоги в своем приложении из ItemEdit Activity.Это где можно редактировать / просматривать свои заметки / задачи, они также могут установить напоминание / будильник для элемента там.Я установил будильник с помощью следующего кода:

private void createAlarm() {
     Intent intent = new Intent(this, ReminderReceiver.class);
     intent.putExtra("reminder_message", "Reminder Received!");
     intent.putExtra("item_id", mRowId);
     PendingIntent sender = 
         PendingIntent.getBroadcast(
                 getApplicationContext(), 
                 ALARM_ID, 
                 intent, 
                 PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

     // Get the AlarmManager service
     AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
     // Set alarm to the time given by the user.
     am.set(AlarmManager.RTC_WAKEUP, mReminderCal.getTimeInMillis(), sender);
}

И вот получатель

    public class ReminderReceiver extends BroadcastReceiver {

    private static final String TAG = "MyApp";

    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            Bundle bundle = intent.getExtras();
            String message = bundle.getString("reminder_message");
            Log.v(TAG, message);
        } catch(Exception e) {
            Log.v(TAG, "OH SNAP!");
            e.printStackTrace();
        }

    }

Редактировать: Также у меня есть следующее в моем манифесте:

<receiver android:process=":remote" android:name="ReminderReceiver"></receiver>

Если я останусь в Activity, где я установлю будильник, он будет принят нормально.Если я нажму кнопку «Назад», чтобы вернуться к моему ListActivity, где перечислены все элементы, или выйду из приложения полностью, будильник никогда не сработает.Неужели я сделал что-то не так в настройке своего будильника, что он срабатывает только от действия, которое его установило?

Спасибо.

1 Ответ

1 голос
/ 03 февраля 2011

Вам нужно искать Сервис вместо Activity для долгоживущего процесса, который не взаимодействует с пользователем (например, будильник).

...