From 5fc9567cfa6b6beee4f52a9f835f304865d693e1 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 10 四月 2025 18:13:58 +0800
Subject: [PATCH] add: 消息提醒后版本

---
 app/src/main/java/com/example/firstapp/App.kt |  109 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 67 insertions(+), 42 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/App.kt b/app/src/main/java/com/example/firstapp/App.kt
index c8fc2c4..83a1eae 100644
--- a/app/src/main/java/com/example/firstapp/App.kt
+++ b/app/src/main/java/com/example/firstapp/App.kt
@@ -11,23 +11,15 @@
 import androidx.annotation.NonNull
 import androidx.lifecycle.MutableLiveData
 import androidx.multidex.MultiDex
-import androidx.work.Configuration
-import androidx.work.WorkManager
+import androidx.work.*
 import com.example.firstapp.core.Core
 import com.example.firstapp.database.repository.CodeRepository
 import com.example.firstapp.database.repository.KeywordRepository
 import com.example.firstapp.database.repository.MsgRepository
-import com.example.firstapp.database.repository.ReminderRepository
 import com.example.firstapp.database.service.RetrofitClient
 import com.example.firstapp.receiver.CactusReceiver
-import com.example.firstapp.utils.AppInfo
-import com.example.firstapp.utils.FRONT_CHANNEL_ID
-import com.example.firstapp.utils.FRONT_CHANNEL_NAME
-import com.example.firstapp.utils.FRONT_NOTIFY_ID
-import com.example.firstapp.utils.FRPC_LIB_VERSION
-import com.example.firstapp.utils.Log
-import com.example.firstapp.utils.PreferencesManager
-import com.example.firstapp.utils.SettingUtils
+import com.example.firstapp.service.ReminderWorker
+import com.example.firstapp.utils.*
 import com.example.firstapp.utils.tinker.TinkerLoadLibrary
 import com.gyf.cactus.Cactus
 import com.gyf.cactus.callback.CactusCallback
@@ -44,17 +36,15 @@
 import java.io.FileWriter
 import java.io.IOException
 import java.text.SimpleDateFormat
-import java.util.Date
-import java.util.Locale
+import java.util.*
 
 @Suppress("DEPRECATION")
-class App : Application(), CactusCallback, Configuration.Provider by Core {
+class App : Application(), CactusCallback, Configuration.Provider {
 
     val applicationScope = CoroutineScope(SupervisorJob())
     val database by lazy { AppDatabase.getInstance(this) }
     val msgRepository by lazy { MsgRepository(database.msgDao()) }
     val codeRepository by lazy { CodeRepository(database.codeDao()) }
-    val reminderRepository by lazy { ReminderRepository(database.reminderDao()) }
     val keywordRepository by lazy { KeywordRepository(RetrofitClient.apiService,database.keywordDao()) }
 
     companion object {
@@ -133,7 +123,6 @@
             } catch (ex: IOException) {
                 ex.printStackTrace()
             }
-            //使用默认的处理方式让APP停止运行
             defaultHandler?.uncaughtException(thread, throwable)
         }
 
@@ -141,12 +130,20 @@
             context = applicationContext
             initLibs()
             PreferencesManager.init(this)
-            //纯客户端模式
-            if (SettingUtils.enablePureClientMode) return
 
-            //初始化WorkManager
-//            WorkManager.initialize(this, Configuration.Builder().build())
+            try {
+                if (SettingUtils.enablePureClientMode) return
+            } catch (e: Exception) {
+                // 捕获SettingUtils未初始化的异常
+                Log.e(TAG, "SettingUtils未初始化: ${e.message}")
+                // 继续执行后续代码,不返回
+            }
+
+            // 初始化WorkManager
             WorkManager.initialize(this, getWorkManagerConfiguration())
+
+            // 设置定时检查提醒的WorkManager
+            setupReminderWorker()
 
             //动态加载FrpcLib
             val libPath = filesDir.absolutePath + "/libs"
@@ -285,7 +282,7 @@
     @NonNull
     override fun getWorkManagerConfiguration(): Configuration {
         return Configuration.Builder()
-            .setMinimumLoggingLevel(android.util.Log.DEBUG) // 设置日志级别
+            .setMinimumLoggingLevel(android.util.Log.DEBUG)
             .build()
     }
 
@@ -296,39 +293,39 @@
         Core.init(this)
         Log.init(applicationContext)
         // 配置文件初始化
-       /* SharedPreference.init(applicationContext)
+        SharedPreference.init(applicationContext)
         // X系列基础库初始化
 //        XBasicLibInit.init(this)
         // 初始化日志打印
         isDebug = SettingUtils.enableDebugMode
         Log.init(applicationContext)
         // 转发历史工具类初始化
-        HistoryUtils.init(applicationContext)
+//        HistoryUtils.init(applicationContext)
         // 版本更新初始化
 //        XUpdateInit.init(this)
         // 运营统计数据
 //        UMengInit.init(this)
         // 初始化语种切换框架
-        MultiLanguages.init(this)
+//        MultiLanguages.init(this)
         // 设置语种变化监听器
-        MultiLanguages.setOnLanguageListener(object : OnLanguageListener {
-            override fun onAppLocaleChange(oldLocale: Locale, newLocale: Locale) {
-                // 注意:只有setAppLanguage时触发,clearAppLanguage时不触发
-                Log.i(TAG, "监听到应用切换了语种,旧语种:$oldLocale,新语种:$newLocale")
-                switchLanguage(newLocale)
-            }
-
-            override fun onSystemLocaleChange(oldLocale: Locale, newLocale: Locale) {
-                Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale")
-                switchLanguage(newLocale)
-                *//*val isFlowSystem = SettingUtils.isFlowSystemLanguage //MultiLanguages.isSystemLanguage(context)取值不对,一直是false
-                Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale,是否跟随系统:$isFlowSystem")
-                if (isFlowSystem) {
-                    CommonUtils.switchLanguage(oldLocale, newLocale)
-                }*//*
-            }
-        })
-        switchLanguage(MultiLanguages.getAppLanguage(this))*/
+//        MultiLanguages.setOnLanguageListener(object : OnLanguageListener {
+//            override fun onAppLocaleChange(oldLocale: Locale, newLocale: Locale) {
+//                // 注意:只有setAppLanguage时触发,clearAppLanguage时不触发
+//                Log.i(TAG, "监听到应用切换了语种,旧语种:$oldLocale,新语种:$newLocale")
+//                switchLanguage(newLocale)
+//            }
+//
+//            override fun onSystemLocaleChange(oldLocale: Locale, newLocale: Locale) {
+//                Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale")
+//                switchLanguage(newLocale)
+//                *//*val isFlowSystem = SettingUtils.isFlowSystemLanguage //MultiLanguages.isSystemLanguage(context)取值不对,一直是false
+//                Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale,是否跟随系统:$isFlowSystem")
+//                if (isFlowSystem) {
+//                    CommonUtils.switchLanguage(oldLocale, newLocale)
+//                }*//*
+//            }
+//        })
+//        switchLanguage(MultiLanguages.getAppLanguage(this))
     }
 
     @SuppressLint("CheckResult")
@@ -451,4 +448,32 @@
 //        )
 //    }
 
+    /**
+     * 设置定时提醒Worker
+     * 配置为每天运行一次检查是否有新的提醒内容
+     */
+    private fun setupReminderWorker() {
+        Log.d(TAG, "设置定时提醒Worker")
+        
+        val constraints = Constraints.Builder()
+            .setRequiredNetworkType(NetworkType.CONNECTED)
+            .build()
+        
+        // 创建周期性工作请求
+        val reminderWorkRequest = PeriodicWorkRequestBuilder<ReminderWorker>(
+            ReminderWorker.REPEAT_INTERVAL,
+            ReminderWorker.REPEAT_INTERVAL_TIME_UNIT
+        )
+            .setConstraints(constraints)
+            .addTag("reminder_worker")
+            .build()
+
+        // 使用 REPLACE 策略确保新配置生效
+        WorkManager.getInstance(this).enqueueUniquePeriodicWork(
+            "reminder_work",
+            ExistingPeriodicWorkPolicy.REPLACE,
+            reminderWorkRequest
+        )
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3