package cn.mutils.app.media; import android.content.Context; import android.content.Intent; import cn.mutils.app.event.listener.OnActivityResultListener; import cn.mutils.app.ui.core.IActivityExecutor; import cn.mutils.core.ILockable; import cn.mutils.core.event.Dispatcher; public class MediaTask extends Dispatcher implements ILockable { protected IActivityExecutor mExecutor; protected int mRequestCode; protected boolean mLocked = false; protected OnActivityResultListener mOnActivityResultListener = new MediaResultListener(); public MediaTask(IActivityExecutor executor, int requestCode) { mExecutor = executor; mRequestCode = requestCode; } @Override public boolean isLocked() { return mLocked; } @Override public void setLocked(boolean locked) { mLocked = locked; } protected void onActivityResult(Context context, int requestCode, int resultCode, Intent data) { } class MediaResultListener implements OnActivityResultListener { @Override public void onActivityResult(Context context, int requestCode, int resultCode, Intent data) { if (mRequestCode != requestCode) { return; } mExecutor.removeOnActivityResultListener(mOnActivityResultListener); mLocked = false; MediaTask.this.onActivityResult(context, requestCode, resultCode, data); } } }