Я пытаюсь избежать выполнения повторяющихся задач в службе с помощью синхронизированной карты в onStartMethod, а затем проверять, что ключ еще не сохранен. Однако до сих пор он не работает, он выполняет одно и то же дважды, если я позвоню в начале службы дважды.Синхронизированная карта в службе onStartCommand
public void onCreate() {
SYNCED_TABLES = Collections.synchronizedMap(new Hashtable<>());
}
public int onStartCommand(Intent intent, int flags, int startId) {
synchronized (SYNCED_TABLES){
if(!SYNCED_TABLES.containsKey(intent.getStringExtra(KEY))){
SYNCED_TABLES.put(intent.getStringExtra(KEY), true);
/* Do stuff on a Handler thread */
}
else{
Log.d(TAG, "Tried to execute the same task twice " + intent.getStringExtra(KEY));
}
}
}
Почему бы просто не использовать IntentService? – Submersed
Работа, выполняемая в обработчике потоков, представляет собой запрос на отправку на сервер. Мы хотим сделать запросы многопоточными (существует несколько разных баз данных) – Julio