В моем коде я использую IntentService
для прослушивания обновлений местоположения (либо GPS, либо обновления сети), и эта IntentService
запускается при возникновении события получен, поэтому он запускается с помощью startService ()
из любого действия.
public class AddLocationService extends IntentService implements LocationListener {
/*My code here*/
}
@Override
protected void onHandleIntent(Intent intent) {
if(getOldLoc() == null)
{
//Get a new location
this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, TIME_INTERVAL_GPS, 0, this);
this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TIME_INTERVAL_GPS, 0, this);
Log.d(AddLocationService.TAG, "Network listener started");
this.time_start_listening = System.currentTimeMillis();
mTimerThread mTimerRunnable = new mTimerThread();
this.timerThread = new Thread(mTimerRunnable);
this.timerThread.start();
}
else
/*REUSE OLD LOCATION*/
}
Моя проблема заключается в следующем: когда два события запускают эту IntentService
, а второе запускает его, пока первое все еще запрашивает обновления, я бы хотел, чтобы второе подождало, пока первое не будет полностью завершено ( местоположение найдено ИЛИ поток таймера завершается).
Однако всякий раз, когда IntentService
выполняется во второй раз (первый экземпляр все еще работает), он распечатывает мне журнал и делает то же, что и выполнялся параллельно.
Однако я думал, что основная цель IntentService
заключался в том, что это что-то последовательное, поэтому второму намерению придется ждать, пока не будет выполнено первое ...
Я что-то не понял?