From: kfl_614 Date: Thu, 3 Dec 2020 11:39:57 +0000 (+0800) Subject: fixed task can not remove X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=443f1e669f7504c6d3046b688730e53148618f26;p=icworkservice.git fixed task can not remove --- diff --git a/app/src/main/java/com/ic/work/ThreadPoolManager.java b/app/src/main/java/com/ic/work/ThreadPoolManager.java index abb97d7..a356209 100644 --- a/app/src/main/java/com/ic/work/ThreadPoolManager.java +++ b/app/src/main/java/com/ic/work/ThreadPoolManager.java @@ -1,22 +1,24 @@ package com.ic.work; -import java.util.concurrent.Executor; +import com.ic.work.utils.IcLog; + +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import java.util.concurrent.SynchronousQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; public class ThreadPoolManager { + private static final String TAG = "ThreadPoolManager"; private static ThreadPoolManager mInstance; - private ExecutorService mTheadPool; + private final ExecutorService mThreadPool; + + private final List> futures = new ArrayList<>(); - private Future mFuture; - public static final synchronized ThreadPoolManager getInstance() { + public static synchronized ThreadPoolManager getInstance() { if (mInstance == null) { mInstance = new ThreadPoolManager(); } @@ -24,20 +26,24 @@ public class ThreadPoolManager { } private ThreadPoolManager() { - mTheadPool = Executors.newSingleThreadExecutor(); + mThreadPool = Executors.newSingleThreadExecutor(); } public void execute(Runnable runnable) { if (runnable == null) return; - - mFuture = mTheadPool.submit(runnable); + Future future = mThreadPool.submit(runnable); + futures.add(future); } /** * 从线程池中移除任务 */ public void remove() { - mFuture.cancel(true); + IcLog.d(TAG, "remove all task.."); + for (Future future : futures) { + future.cancel(true); + } + } } diff --git a/app/src/main/java/com/ic/work/WorkService.java b/app/src/main/java/com/ic/work/WorkService.java index 45a0583..cada709 100644 --- a/app/src/main/java/com/ic/work/WorkService.java +++ b/app/src/main/java/com/ic/work/WorkService.java @@ -5,8 +5,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; import android.os.Build; import android.os.IBinder; import android.text.TextUtils; @@ -56,8 +54,6 @@ import org.threeten.bp.Duration; import org.threeten.bp.LocalDateTime; import org.threeten.bp.ZoneId; -import java.util.Observable; - import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK; import static com.ic.work.utils.ICWorkConstants.EventType.TEST_A9_BLOOD; import static com.ic.work.utils.ICWorkConstants.EventType.TEST_AK_BLOOD; @@ -358,14 +354,20 @@ public class WorkService extends Service { */ @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(ThreadPoolEvent event) { - IcLog.i(TAG, "onMessageEvent EventType " + event.getEventType()); + int eventType = event.getEventType(); + IcLog.i(TAG, "onMessageEvent EventType " + eventType); + if (eventType == STOP_ALL_TASK) { + ThreadPoolManager.getInstance().remove(); + mIsBusy = false; + return; + } if (mIsBusy) { IcLog.d(TAG, "task is running.."); return; } //进来了就繁忙了,除非是停止了,也就是4的Case,停止检测 mIsBusy = true; - switch (event.getEventType()) { + switch (eventType) { case 1: ThreadPoolManager.getInstance().execute(new PedRunnable(mApp.getApplicationContext(), mApp.getRepository())); break; @@ -375,10 +377,6 @@ public class WorkService extends Service { case 3: ThreadPoolManager.getInstance().execute(new BloodRunnable()); break; - case STOP_ALL_TASK: - ThreadPoolManager.getInstance().remove(); - mIsBusy = false; - break; case 5: ThreadPoolManager.getInstance().execute(new WeatherDBRun(mApp.getWeatherRepository())); break; diff --git a/app/src/main/java/com/ic/work/hardware/BloodRunnable.java b/app/src/main/java/com/ic/work/hardware/BloodRunnable.java index ebd22d3..19cda8d 100644 --- a/app/src/main/java/com/ic/work/hardware/BloodRunnable.java +++ b/app/src/main/java/com/ic/work/hardware/BloodRunnable.java @@ -1,12 +1,5 @@ package com.ic.work.hardware; -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; - -import com.ic.work.event.AkBloodCheckResultEvent; import com.ic.work.event.BloodCheckResultEvent; import com.ic.work.event.BloodCheckTempEvent; import com.ic.work.event.BloodCheckTipsEvent; @@ -19,7 +12,6 @@ import org.greenrobot.eventbus.EventBus; import java.util.Random; -import static android.content.Context.SENSOR_SERVICE; import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK; import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DATA_CHECK; import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE; @@ -128,8 +120,10 @@ public class BloodRunnable implements Runnable { } catch (InterruptedException e) { IcLog.e(TAG, "Stop Get Heart Value", e); - } catch (Exception ee) { + } catch (Exception e) { + e.printStackTrace(); } finally { + IcLog.d(TAG, "disable ppg.."); HardwareUtils.onNdkDisablePPG(); } } diff --git a/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java b/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java index 56a29cf..150b0f4 100644 --- a/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java +++ b/app/src/main/java/com/ic/work/hardware/TemperatureRunnable.java @@ -1,7 +1,6 @@ package com.ic.work.hardware; - import com.ic.work.event.TaskFinishedEvent; import com.ic.work.event.TemperatureResultCompleteEvent; import com.ic.work.event.TemperatureResultEvent; @@ -34,7 +33,6 @@ public class TemperatureRunnable implements Runnable { HardwareUtils.disablePedometer(); if (HardwareUtils.enableTemperature()) { IcLog.i(TAG, "getNdkTemperatureValue enableTemperature"); - Thread.sleep(1000); } // } @@ -49,14 +47,16 @@ public class TemperatureRunnable implements Runnable { animal = HardwareUtils.getBodyTempFromWristTemp(testValue, room_temperature); } IcLog.i(TAG, "getNdkTemperatureValue Value:" + testValue + " TempOut:" + tempout + " bodyTemp:" + animal); - if (tempout > 50 || tempout < 10 || testValue < 10 || testValue > 50) { - IcLog.i(TAG, "getNdkTemperatureValue TempOut or Wirst Value out of range skip send it ! "); - } else { - lastBodyTemp = animal; - lastWristTemp = testValue; - lastTempOut = tempout; - EventBus.getDefault().post(new TemperatureResultEvent(testValue, animal, tempout)); - } + //if (tempout > 50 || tempout < 10 || testValue < 10 || testValue > 50) { + // 提交 + //if (tempout > 50 || tempout < 10 || testValue < 10 || testValue > 50) { + IcLog.i(TAG, "getNdkTemperatureValue TempOut or Wirst Value out of range skip send it ! "); + //} else { + lastBodyTemp = animal; + lastWristTemp = testValue; + lastTempOut = tempout; + EventBus.getDefault().post(new TemperatureResultEvent(testValue, animal, tempout)); + //} try { Thread.sleep(1000); } catch (InterruptedException e) { diff --git a/app/src/main/java/com/ic/work/process/BloodProcess.java b/app/src/main/java/com/ic/work/process/BloodProcess.java index 7bdadb9..41628d4 100644 --- a/app/src/main/java/com/ic/work/process/BloodProcess.java +++ b/app/src/main/java/com/ic/work/process/BloodProcess.java @@ -6,7 +6,6 @@ import android.os.RemoteException; import com.ic.aidl.blood.IBloodAidlInterface; import com.ic.aidl.blood.IBloodRemoteService; -import com.ic.work.ThreadPoolManager; import com.ic.work.event.ThreadPoolEvent; import com.ic.work.utils.IcLog; @@ -46,6 +45,7 @@ public class BloodProcess { @Override public void stopCheckBlood() throws RemoteException { + IcLog.d(TAG, "remote call stopCheckBlood.."); EventBus.getDefault().post(new ThreadPoolEvent(STOP_ALL_TASK)); } };