package cn.mutils.core.task; import cn.mutils.core.event.Dispatcher; public class Task extends Dispatcher implements IStoppable { protected boolean mStarted; protected boolean mStopped; protected boolean mRunInBackground = true; protected boolean mRestartable = false; @Override public boolean isRunInBackground() { return mRunInBackground; } @Override public void setRunInBackground(boolean runInBackground) { if (mStarted || mStopped) { return; } mRunInBackground = runInBackground; } @Override public boolean isStopped() { return mStopped; } @Override public boolean stop() { if (mStopped) { return false; } mStopped = true; onStop(); if (!mRestartable) { removeAllListeners(); } return true; } protected void onStop() { } public boolean isStarted() { return mStarted; } public boolean start() { if (mStarted || mStopped) { return false; } mStarted = true; onStart(); return true; } protected void onStart() { } public boolean isRunning() { return mStarted && !mStopped; } }