From: kfl_614 Date: Tue, 7 Apr 2020 10:17:37 +0000 (+0800) Subject: 1.修复sql时间计算错误。 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=0eb902ea1d145d2ba256e78af5c121a3aed426dc;p=icworkservice.git 1.修复sql时间计算错误。 2.修改线程池。 3.添加零点接收广播 --- diff --git a/app/src/main/java/com/ic/work/MainActivity.java b/app/src/main/java/com/ic/work/MainActivity.java index 1635e79..e4e42ad 100644 --- a/app/src/main/java/com/ic/work/MainActivity.java +++ b/app/src/main/java/com/ic/work/MainActivity.java @@ -2,6 +2,7 @@ package com.ic.work; import androidx.appcompat.app.AppCompatActivity; +import android.app.AlarmManager; import android.content.Context; import android.nfc.Tag; import android.os.Bundle; @@ -49,7 +50,7 @@ public class MainActivity extends AppCompatActivity { OffsetDateTime time = OffsetDateTime.now(ZoneId.systemDefault()).plusDays(1); - new Handler().postDelayed(new Runnable() { + /**new Handler().postDelayed(new Runnable() { @Override public void run() { int count=0; @@ -63,7 +64,7 @@ public class MainActivity extends AppCompatActivity { } } - },1000); + },1000);**/ } diff --git a/app/src/main/java/com/ic/work/ThreadPoolManager.java b/app/src/main/java/com/ic/work/ThreadPoolManager.java index 23f4f68..03b901a 100644 --- a/app/src/main/java/com/ic/work/ThreadPoolManager.java +++ b/app/src/main/java/com/ic/work/ThreadPoolManager.java @@ -3,6 +3,7 @@ package com.ic.work; import java.util.concurrent.Executor; 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; @@ -14,6 +15,8 @@ public class ThreadPoolManager { private ExecutorService mTheadPool; + private Future mFuture; + public static final synchronized ThreadPoolManager getInstance() { if (mInstance == null) { mInstance = new ThreadPoolManager(); @@ -29,16 +32,13 @@ public class ThreadPoolManager { if (runnable == null) return; - mTheadPool.execute(runnable); + mFuture = mTheadPool.submit(runnable); } /** * 从线程池中移除任务 */ - public void remove(Runnable runnable) { - if (runnable == null) - return; - - // mTheadPool.remove(runnable); + public void remove() { + mFuture.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 1aae415..63267d6 100644 --- a/app/src/main/java/com/ic/work/WorkService.java +++ b/app/src/main/java/com/ic/work/WorkService.java @@ -36,6 +36,9 @@ import com.ic.work.weather.WeatherHelper; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import org.threeten.bp.Duration; +import org.threeten.bp.LocalDateTime; +import org.threeten.bp.ZoneId; public class WorkService extends Service { @@ -59,7 +62,7 @@ public class WorkService extends Service { private MessengerCoreService coreService; - private BloodRunnable mBloodRun; + private LocalDateTime mFinishTime; @Override public IBinder onBind(Intent intent) { @@ -210,16 +213,10 @@ public class WorkService extends Service { ThreadPoolManager.getInstance().execute(new PedRecordRunnable(mApp.getRepository())); break; case 3: - if (mBloodRun == null) { - mBloodRun = new BloodRunnable(); - } - ThreadPoolManager.getInstance().execute(mBloodRun); + ThreadPoolManager.getInstance().execute(new BloodRunnable()); break; case 4: - if (mBloodRun != null) { - ThreadPoolManager.getInstance().remove(mBloodRun); - mBloodRun = null; - } + ThreadPoolManager.getInstance().remove(); break; case 5: ThreadPoolManager.getInstance().execute(new WeatherDBRun(mApp.getWeatherRepository())); @@ -231,7 +228,6 @@ public class WorkService extends Service { IntentFilter filter = new IntentFilter(); filter.addAction(GET_PED_ACTION); filter.addAction(PED_FINISH_ACTION); - filter.addAction(Intent.ACTION_DATE_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); registerReceiver(mIntentReceiver, filter); } @@ -267,23 +263,33 @@ public class WorkService extends Service { break; case PED_FINISH_ACTION: IcLog.i(TAG,"PED_FINISH_ACTION"); - //完成,需要把所有的今天的数据全部写入到数据中 - int count = intent.getIntExtra(PED_TOTAL_KEY, 0); - ThreadPoolManager.getInstance().execute(new WritePedTotalRunnable( - mApp.getApplicationContext(), - mApp.getRepository(), - count)); - break; - case Intent.ACTION_DATE_CHANGED: - IcLog.i(TAG,"ACTION_DATE_CHANGED"); - mWeatherHelper.startLocation(getApplicationContext(), true); - postPedThread(); + everyDayFinish(intent); break; } } } }; + private void everyDayFinish(Intent intent){ + if(mFinishTime != null){ + LocalDateTime time = LocalDateTime.now(ZoneId.systemDefault()); + if(Duration.between(time,mFinishTime).toDays() < 1){ + return; + } + } + IcLog.i(TAG,"everyDayFinish"); + mFinishTime = LocalDateTime.now(ZoneId.systemDefault()); + + //完成,需要把所有的今天的数据全部写入到数据中 + mWeatherHelper.startLocation(getApplicationContext(), true); + int count = intent.getIntExtra(PED_TOTAL_KEY, 0); + ThreadPoolManager.getInstance().execute(new WritePedTotalRunnable( + mApp.getApplicationContext(), + mApp.getRepository(), + count)); + postPedThread(); + } + private void postPedThread() { ThreadPoolManager.getInstance().execute(new PedRunnable(mApp.getApplicationContext(), mApp.getRepository())); } diff --git a/app/src/main/java/com/ic/work/db/dao/PedDao.java b/app/src/main/java/com/ic/work/db/dao/PedDao.java index c054b79..97399b6 100644 --- a/app/src/main/java/com/ic/work/db/dao/PedDao.java +++ b/app/src/main/java/com/ic/work/db/dao/PedDao.java @@ -14,13 +14,13 @@ import java.util.List; public interface PedDao { //查询时间对应的记录,可能为空。 - @Query("SELECT * FROM icPedDb WHERE date(pedDate) = date(:currDate)") + @Query("SELECT * FROM icPedDb WHERE date(pedDate,'localtime') = date(:currDate,'localtime')") List loadDatePedList(OffsetDateTime currDate); @Query("SELECT COUNT(id) FROM icPedDb") int queryCountPed(); - @Query("SELECT * FROM icPedDb ORDER BY date(pedDate) limit 1") + @Query("SELECT * FROM icPedDb ORDER BY date(pedDate,'localtime') limit 1") List loadOldestDatePedList(); @Query("SELECT * FROM icPedDb")