ReplacingSerialSingleThreadExecutor.java

 1package eu.siacs.conversations.utils;
 2
 3public class ReplacingSerialSingleThreadExecutor extends SerialSingleThreadExecutor {
 4
 5	public ReplacingSerialSingleThreadExecutor(String name) {
 6		super(name, false);
 7	}
 8
 9	public ReplacingSerialSingleThreadExecutor(boolean prepareLooper) {
10		super(ReplacingSerialSingleThreadExecutor.class.getName(), prepareLooper);
11	}
12
13	@Override
14	public synchronized void execute(final Runnable r) {
15		tasks.clear();
16		if (active != null && active instanceof Cancellable) {
17			((Cancellable) active).cancel();
18		}
19		super.execute(r);
20	}
21
22	public synchronized void cancelRunningTasks() {
23		tasks.clear();
24		if (active != null && active instanceof Cancellable) {
25			((Cancellable) active).cancel();
26		}
27	}
28}