private void checkTaskDisposal() {
        synchronized (taskMutex) {
            if (!taskEventData.hasObservers() &&
                (lastEvent.type == WorkerTaskEventType.FINISHED ||
                    lastEvent.type == WorkerTaskEventType.ERROR ||
                    lastEvent.type == WorkerTaskEventType.CANCELLED)) {
                Log.i(logPraefix + "GLOBAL: remove task " + globalId + "(lastEvent=" + lastEvent + ")");
                taskStore.remove(globalId);
            }
        }
    }
Call this method to "finish" a task (means: when result is processed)
main/src/main/java/cgeo/geocaching/utils/workertask/WorkerTask.java