IntentService: как правильно поставить в очередь?

В моем коде я использую 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 заключался в том, что это что-то последовательное, поэтому второму намерению придется ждать, пока не будет выполнено первое ...

Я что-то не понял?

5
задан Nikola Despotoski 28 July 2011 в 22:17
поделиться