Зарегистрируйте сигнал тревоги, используя AlarmManager
, чтобы проснуться через 5 минут, когда пользователь впервые откроет приложение.создайте сервис (извлечение местоположения и обновление на сервере), чтобы он работал, когда тревога уведомляет ваше приложение.После того, как служба закончила работу, зарегистрируйтесь для тревоги снова, чтобы проснуться через 5 минут.таким образом, вы можете достичь своей цели.
ref
Android: Как периодически отправлять местоположение на сервер
http://developer.android.com/reference/android/app/AlarmManager.html
http://developer.android.com/reference/android/app/Service.html
1-е редактирование - добавление примера кода
Шаг 1 - Создание диспетчера аварийных сигналов и регистрация аварийных сигналов
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(Main.this, YourWakefulReceiver.class);
bool flag = (PendingIntent.getBroadcast(Main.this, 0,
intent, PendingIntent.FLAG_NO_CREATE)==null);
/*Register alarm if not registered already*/
if(flag){
PendingIntent alarmIntent = PendingIntent.getBroadcast(Main.this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Create Calendar obj called calendar
Calendar calendar = Calendar.getInstance();
/* Setting alarm for every one hour from the current time.*/
int intervalTimeMillis = 1000 * 60 * 60; // 1 hour
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), intervalTimeMillis,
alarmIntent);
}
Шаг 2 - Создание класса приемника
public class YourWakefulReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, SimpleWakefulService.class);
startWakefulService(context, service);
}
}
}
Setp 3 - Создать класс обслуживания
public class SimpleWakefulService extends IntentService {
private static String tagName = "YourService";
public SimpleWakefulService() {
super("YourService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Start your location
LocationUtil.startLocationListener();
try {
// Wait for 10 seconds
Thread.sleep(1000*10);
} catch (InterruptedException e) {
}
//Stop location listener
LocationUtil.stopLocationListener();
// upload or save location
uploadGps();
SimpleWakefulReceiver.completeWakefulIntent(intent);
}
}
Шаг 4 - Зарегистрировать службу и получателя
<service android:name="com.envision.ghari.services.SimpleWakefulService"></service>
<receiver android:name="com.envision.ghari.receivers.YourWakefulReceiver"></receiver>
Примечание. Этот код предназначен для понимания реализации.Он не скомпилируется.