package com.taoke.autopay.android.service;
|
|
import java.util.concurrent.CopyOnWriteArrayList;
|
|
public abstract class AbstractJob implements Job {
|
|
private boolean cancelled;
|
|
private boolean finished;
|
|
private CopyOnWriteArrayList<JobListener> mJobListeners;
|
|
@Override
|
public final boolean isCancelled() {
|
return cancelled;
|
}
|
|
@Override
|
public final boolean isFinished() {
|
return finished;
|
}
|
|
@Override
|
public void addJobListener(JobListener listener) {
|
if (mJobListeners == null) {
|
mJobListeners = new CopyOnWriteArrayList<>();
|
}
|
this.mJobListeners.add(listener);
|
}
|
|
@Override
|
public void removeJobListener(JobListener listener) {
|
if (mJobListeners != null) {
|
mJobListeners.remove(listener);
|
}
|
}
|
|
protected void notifyFinish() {
|
synchronized (this) {
|
if (!isFinished() && !isCancelled()) {
|
if (mJobListeners != null) {
|
for (JobListener listener : mJobListeners) {
|
listener.onFinished();
|
}
|
}
|
finished = true;
|
}
|
}
|
}
|
|
protected void notifyCancel() {
|
synchronized (this) {
|
if (!isFinished() && !isCancelled()) {
|
if (mJobListeners != null) {
|
for (JobListener listener : mJobListeners) {
|
listener.onCancelled();
|
}
|
}
|
cancelled = true;
|
}
|
}
|
}
|
|
protected void notifyPayCountLimit() {
|
synchronized (this) {
|
if (!isFinished() && !isCancelled()) {
|
if (mJobListeners != null) {
|
for (JobListener listener : mJobListeners) {
|
listener.onPayCountLimit();
|
}
|
}
|
cancelled = true;
|
}
|
}
|
}
|
}
|