Как я могу разбудить мое приложение для Android через определенные регулярные промежутки времени? - PullRequest
2 голосов
/ 12 февраля 2012

Я собираюсь создать приложение, которое будет отслеживать движение моего телефона Android каждые несколько минут и отправлять его на мой сервер. Я много читал в Интернете о том, как это сделать с помощью службы AlarmManager и Partial_WakeLock. Я также просмотрел примеры использования comonsware на github.com, но я был немного смущен, потому что у меня все еще нет опыта работы с android.

Мне удалось получить мое приложение в [получить местоположение и отправить его на мой сервер]. Как сделать так, чтобы мой сервис включался каждые несколько минут и выполнял [упомянутую работу]? В примере Wakeful в commonsware, в каком методе я упоминаю свою [работу] и в каком методе я продолжаю вызывать его?

Ответы [ 2 ]

7 голосов
/ 12 февраля 2012

Вам нужны Service и AlarmManager. Ваша служба будет обрабатывать получение позиции и отправку ее на сервер, а AlarmManager будет вызывать вашу службу в течение заданного вами интервала. Вы должны инициализировать ваш AlarmManager с вашим Service примерно таким же образом в onCreate или другом месте, которое вы хотите:

AlarmManager alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, YourAlarmReceiver.class),PendingIntent.FLAG_CANCEL_CURRENT);

// Use inexact repeating which is easier on battery (system can phase events and not wake at exact times)
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, YOUR_ALARM_TRIGGER_AT_TIME,YOUR_ALARM_INTERVAL, pendingIntent);

YourAlarmReceiver собирается запустить ваш сервис

public class YourAlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
          context.startService(new Intent(context, YourService.class));
    }
}

О том, как пользоваться Сервисами, можно узнать на сайте Android http://developer.android.com/guide/topics/fundamentals/services.html

0 голосов
/ 12 февраля 2012

вы могли бы использовать частичный wakeLock с sleep (X), который при разрешении sleep (x) система вызовет следующую строку кода, но проблема в том, что я вижу возможный бесконечный цикл, который может потребовать задачи убить действие или просто вывести систему из строя.

...