From 0eb902ea1d145d2ba256e78af5c121a3aed426dc Mon Sep 17 00:00:00 2001 From: kfl_614 Date: Tue, 7 Apr 2020 18:17:37 +0800 Subject: [PATCH] =?utf8?q?1.=E4=BF=AE=E5=A4=8Dsql=E6=97=B6=E9=97=B4?= =?utf8?q?=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF=E3=80=82=202.=E4=BF=AE?= =?utf8?q?=E6=94=B9=E7=BA=BF=E7=A8=8B=E6=B1=A0=E3=80=82=203.=E6=B7=BB?= =?utf8?q?=E5=8A=A0=E9=9B=B6=E7=82=B9=E6=8E=A5=E6=94=B6=E5=B9=BF=E6=92=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ic/work/MainActivity.java | 5 +- .../java/com/ic/work/ThreadPoolManager.java | 12 ++--- .../main/java/com/ic/work/WorkService.java | 48 +++++++++++-------- .../main/java/com/ic/work/db/dao/PedDao.java | 4 +- 4 files changed, 38 insertions(+), 31 deletions(-) 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") -- 2.17.1