我試圖避免在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