как разбудить мою службу намерений каждые 5 минут

Я знаю, что этот вопрос задавали раньше, но я не получил никакого ответа, я хочу создать службу намерений, которая постоянно запускает поток, но когда я выхожу из приложения, моя служба останавливается, а поток тоже останавливается. Мне нужно создать что-то, чтобы разбудить службу каждые несколько минут. или что-то, чтобы предотвратить убийство службы, даже когда приложение убито или закрыто.

вот как я начинаю свою службу

Intent intent= new Intent(Intent.ACTION_SYNC,null,this,IntentServ.class);
startService(intent);

person Malo    schedule 22.05.2015    source источник
comment
Используйте обычный сервис вместо IntentService   -  person Chandrakanth    schedule 22.05.2015
comment
Насколько я знаю, вы можете использовать один wakefulbroadcast с одним обработчиком ... также здесь вам поможет alarmmanager, вы пробовали это   -  person Ranjit    schedule 22.05.2015
comment
Обычная служба работает в течение определенного периода времени, в то время как служба намерений работает в течение длительного времени, тогда служба намерений является наиболее полезной.   -  person Malo    schedule 22.05.2015
comment
пожалуйста, обратитесь.... stackoverflow .com/questions/13820596/   -  person    schedule 22.05.2015
comment
@ Мало .. это не так ... Если вы создаете еще один поток в своей службе, тогда будет удобнее выполнять в нем длительные задачи, а не службу намерений.   -  person    schedule 22.05.2015
comment
нормальный сервис не остановится, когда приложение будет убито? @Вирен   -  person Malo    schedule 22.05.2015
comment
для этого вам нужно добавить START_STICKY в качестве оператора возврата в методе onStartCommand службы   -  person    schedule 22.05.2015
comment
вы правы, я создаю службу с START_STICKY в дополнение к диспетчеру будильника, чтобы будить его каждый час, я хочу, чтобы устройство не спал сейчас :)   -  person Malo    schedule 22.05.2015
comment
я пытаюсь предотвратить переход устройства в спящий режим, вы думали, что диспетчер тревог не переводит устройство в спящий режим @Viren   -  person Malo    schedule 22.05.2015


Ответы (3)


Для этого вы можете использовать AlarmManager, который может запускать вашу службу каждые 1 час. Например :

 AlarmManager mgr = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);
 Intent notificationIntent = new Intent(context,
                UpdateService.class);
 PendingIntent pendingIntent=PendingIntent.getService(context, requestCode, Intent.parseIntent(), 0);
  mgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis(), AlarmManager.INTERVAL_HOUR, pendingIntent);
person Kartheek    schedule 22.05.2015
comment
спасибо, я создал диспетчер аварийных сигналов в дополнение к обычному сервису, и теперь он работает, я пытаюсь предотвратить переход устройства в спящий режим. Вы думали, что диспетчер аварийных сигналов не переводит устройство в спящий режим? - person Malo; 22.05.2015
comment
AlarmManager не предотвращает переход устройства в спящий режим, но если вы хотите разбудить устройство при срабатывании будильника, вы можете использовать AlarmManager.RTC_WAKEUP при регистрации, в противном случае вы можете использовать AlarmManager.RTC. developer.android.com/reference/android/app/AlarmManager.html - person Kartheek; 22.05.2015
comment
почему бы просто не защищать START_STICKY и не экономить ресурсы? - person kiranpradeep; 23.05.2015

AlarmManager и PendingIntent то, что вам нужно в этом случае. Следуйте приведенному ниже примеру:

AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);

/* --- Создать отложенное намерение, которое будет выполнено при пробуждении --- */

PendingIntent operation = getUpdatePolicyOperation();
am.set(AlarmManager.RTC, alarmTime, operation); // alarm time is millisecond time in milliseconds that the alarm should go off, using the appropriate clock (depending on the alarm type).

Вы можете прочитать больше о режиме будильника в AlarmManager здесь или пройти обучение в Здесь

Надеюсь, это помогло.

person Thai Phan Dinh    schedule 22.05.2015
comment
большое спасибо, я хотел бы принять больше, чем ответ :) - person Malo; 22.05.2015
comment
я пытаюсь предотвратить переход устройства в спящий режим, вы думали, что диспетчер тревог не переводит устройство в спящий режим? - person Malo; 22.05.2015

Используйте обычный Service с android.app.AlarmManager.

Не нужно использовать WakefulBroadcastReceiver.

person Injury    schedule 22.05.2015