|
|
@@ -1,79 +0,0 @@
|
|
|
-package com.usai.redant.apexdrivers.utils;
|
|
|
-
|
|
|
-import android.os.AsyncTask;
|
|
|
-
|
|
|
-import java.util.concurrent.ExecutorService;
|
|
|
-import java.util.concurrent.Executors;
|
|
|
-
|
|
|
-public class OperationQueue {
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据CPU核心数控制线程数
|
|
|
- * */
|
|
|
- private static final int count = Runtime.getRuntime().availableProcessors() * 3;
|
|
|
-
|
|
|
- private static ExecutorService limitedTaskExecutor = null;
|
|
|
-
|
|
|
- public OperationQueue() {
|
|
|
- limitedTaskExecutor = Executors.newFixedThreadPool(count);
|
|
|
- }
|
|
|
-
|
|
|
- public void addOperationTask(OperationBackgroundCallBack backgroundCallBack, OperationCompletionCallBack completion, OperationCancelCallBack cancelCallBack) {
|
|
|
-
|
|
|
- OperationTask task = new OperationTask(backgroundCallBack,completion,cancelCallBack);
|
|
|
- task.executeOnExecutor(limitedTaskExecutor);
|
|
|
- }
|
|
|
-
|
|
|
- private class OperationTask extends AsyncTask<Void, Void, Object> {
|
|
|
-
|
|
|
- private OperationBackgroundCallBack mBackgroundCallBack;
|
|
|
- private OperationCompletionCallBack mCompletion;
|
|
|
- private OperationCancelCallBack mCancelCallBack;
|
|
|
-
|
|
|
- OperationTask(OperationBackgroundCallBack backgroundCallBack, OperationCompletionCallBack completion, OperationCancelCallBack cancelCallBack) {
|
|
|
- mBackgroundCallBack = backgroundCallBack;
|
|
|
- mCompletion = completion;
|
|
|
- mCancelCallBack = cancelCallBack;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected Object doInBackground(Void... voids) {
|
|
|
-
|
|
|
- if (mBackgroundCallBack != null) {
|
|
|
- return mBackgroundCallBack.operationDoInBackground();
|
|
|
- }
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onPostExecute(Object object) {
|
|
|
-
|
|
|
- if (mCompletion != null) {
|
|
|
- mCompletion.operationCompletion(object);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onCancelled() {
|
|
|
- super.onCancelled();
|
|
|
-
|
|
|
- if (mCancelCallBack != null) {
|
|
|
- mCancelCallBack.operationCancelled();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public interface OperationBackgroundCallBack {
|
|
|
- Object operationDoInBackground();
|
|
|
- }
|
|
|
-
|
|
|
- public interface OperationCompletionCallBack {
|
|
|
- void operationCompletion(Object object);
|
|
|
- }
|
|
|
-
|
|
|
- public interface OperationCancelCallBack {
|
|
|
- void operationCancelled();
|
|
|
- }
|
|
|
-
|
|
|
-}
|