Android - немедленно запустить службу сигнализации? - PullRequest
0 голосов
/ 13 декабря 2011

Я создал On Boot Receiver для повторного вызова службы бодрствующих намерений каждые 5 минут, но не могу понять, как запустить службу сразу после установки приложения ..? Я не хочу полагаться на перезагрузку устройства пользователем до его запуска!

Вот мой код:

public class OnBootReceiver extends BroadcastReceiver {
private static final int PERIOD = 300000; // check every 5 minutes

@Override
public void onReceive(Context context, Intent intent) {
    AlarmManager mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, OnAlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);

    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60000, PERIOD, pi);
}}

Может кто-нибудь помочь мне, пожалуйста? :)

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Если вы хотите настроить AlarmManager на запуск службы, когда приложение установлено, то это невозможно. Это ограничение ОС, безопасность, если хотите. Но если вы хотите запустить службу в момент запуска приложения, просто позвоните ему, оно продолжит работу.

0 голосов
/ 13 декабря 2011

По сути, поскольку объект Application создается при запуске приложения и при получении намерения BOOT_COMPLETED, вы можете зарегистрироваться в AlarmManager в методе onCreate вашего пользовательского класса Application. Просто имейте в виду, что объект Application создается каждый раз при запуске процесса, что включает в себя случаи, когда процесс временно останавливается для экономии ресурсов. Но если вы не измените PendingIntent каким-либо образом, вам не составит труда зарегистрироваться снова и снова.

Однако невозможно запустить приложение, когда оно установлено, сначала должно быть какое-то взаимодействие с пользователем.

...