onStartMethodで同期マップを使用し、キーがまだ格納されていないことを確認することで、サービス上で重複したタスクを実行しないようにしようとしています。しかし、これまでのところ動作していません。すぐにサービスを2回起動すると同じことが2回実行されます。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