#android #android-activity #alarm
#Android #android-активность #тревога
Вопрос:
Я создаю тревогу в своем приложении из 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. Я обдумывал это. Возможно, я неправильно понимаю, как работает поток сигналов тревоги, но я полагал, что
AlarmManager
это система для всей операционной системы и она сработает независимо от того, чтоActivity
в данный момент активно. Хотя я могу ошибаться в этом предположении.2. @Jonathon. Вы были правы, у меня получилось с
Service
не могли бы вы создать ответ, чтобы я мог отдать вам должное?3. добавлено — вы можете ввести ответ и выбрать свой собственный, поскольку я действительно не так уж сильно вам помог 🙂
4. Нет, ты наставил меня на правильный путь, ты это заслужил! приветствия!
Ответ №1:
Вам нужно обратиться к сервису, а не к Activity
процессу с длительным сроком службы, который не взаимодействует с пользователем (например, будильник).