Commit ef8253c3 authored by wanglei's avatar wanglei

...

parent 51af905f
...@@ -117,6 +117,35 @@ ...@@ -117,6 +117,35 @@
android:name="android.support.FILE_PROVIDER_PATHS" android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" /> android:resource="@xml/file_paths" />
</provider> </provider>
<receiver
android:name=".fcm.alarm.AlarmReceiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_EJECT" />
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<data android:scheme="file" />
</intent-filter>
</receiver>
<service <service
android:name=".service.StayJobService" android:name=".service.StayJobService"
......
...@@ -14,11 +14,13 @@ import com.base.scanqr.bean.config.AdConfigBean ...@@ -14,11 +14,13 @@ import com.base.scanqr.bean.config.AdConfigBean
import com.base.scanqr.bean.config.ConfigBean import com.base.scanqr.bean.config.ConfigBean
import com.base.scanqr.bean.config.PopupConfigBean import com.base.scanqr.bean.config.PopupConfigBean
import com.base.scanqr.fcm.FCMManager import com.base.scanqr.fcm.FCMManager
import com.base.scanqr.fcm.TimerManager.Companion.changeTimer import com.base.scanqr.fcm.alarm.AlarmUtils.startAlarm
import com.base.scanqr.fcm.notification.NotificationManager import com.base.scanqr.fcm.timer.TimerManager.Companion.changeTimer
import com.base.scanqr.fcm.notification.MyNotificationManager
import com.base.scanqr.fcm.receiver.BatteryStatusReceiver import com.base.scanqr.fcm.receiver.BatteryStatusReceiver
import com.base.scanqr.fcm.receiver.PackageStatusReceiver import com.base.scanqr.fcm.receiver.PackageStatusReceiver
import com.base.scanqr.fcm.receiver.ScreenStatusReceiver import com.base.scanqr.fcm.receiver.ScreenStatusReceiver
import com.base.scanqr.fcm.work.RepeatingWorker.Companion.schedulePeriodicWork
import com.base.scanqr.helper.EventUtils import com.base.scanqr.helper.EventUtils
import com.base.scanqr.helper.InstallHelps import com.base.scanqr.helper.InstallHelps
import com.base.scanqr.helper.NewComUtils import com.base.scanqr.helper.NewComUtils
...@@ -140,12 +142,19 @@ class MyApplication : Application() { ...@@ -140,12 +142,19 @@ class MyApplication : Application() {
kotlin.runCatching { kotlin.runCatching {
// startJob() // startJob()
} }
// startAlarm(appContext, 24)
// startAlarm(appContext, 48)
// startAlarm(appContext, 72) //workManager
schedulePeriodicWork(appContext)
//闹钟
startAlarm(appContext, 24)
startAlarm(appContext, 48)
startAlarm(appContext, 72)
//开启上报队列 //开启上报队列
NotificationManager.startNotificationQueue() MyNotificationManager.startNotificationQueue()
} }
......
package com.base.scanqr.fcm.alarm
import android.annotation.SuppressLint
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.base.scanqr.bean.NotificationSendBean
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import com.base.scanqr.fcm.notification.MyNotificationManager
import com.base.scanqr.fcm.work.RepeatingWorker.Companion.schedulePeriodicWork
import com.base.scanqr.helper.EventUtils
import com.base.scanqr.utils.AppPreferences
import com.base.scanqr.utils.LogEx
/**
*
*/
class AlarmReceiver : BroadcastReceiver() {
private val TAG = "AlarmJobReceiver"
@SuppressLint("UnsafeProtectedBroadcastReceiver")
override fun onReceive(context: Context, intent: Intent?) {
LogEx.logDebug(TAG, "AlarmJobReceiver onReceive")
val lastAlarmTime = AppPreferences.getInstance().getLong("lastAlarmTime", 0L)
val currentTime = System.currentTimeMillis()
if (lastAlarmTime == 0L || currentTime - lastAlarmTime >= 1000 * 30 * 60) {
EventUtils.event("alarm_push")
val sendBean = NotificationSendBean(context, POPUP_WHERE_ALARM, canSend = { true }, sendSuccess = {})
MyNotificationManager.submitSendBean(sendBean)
AppPreferences.getInstance().put("lastAlarmTime", System.currentTimeMillis())
}
schedulePeriodicWork(context)
return
}
}
\ No newline at end of file
package com.base.scanqr.fcm.alarm
import android.app.AlarmManager
import android.app.PendingIntent
import android.app.job.JobService
import android.content.Context
import android.content.Intent
import com.base.scanqr.BuildConfig
import com.base.scanqr.fcm.work.RepeatingWorker.Companion.schedulePeriodicWork
import java.util.Calendar
object AlarmUtils {
fun startAlarm(context: Context, hour: Int) {
// context.startJob()
//闹钟定时任务
val alarmManager = context.getSystemService(JobService.ALARM_SERVICE) as AlarmManager
val pendingIntent = PendingIntent.getBroadcast(
context, hour, Intent(context, AlarmReceiver::class.java),
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
val calendar = Calendar.getInstance()
val hourOfDay = if (BuildConfig.DEBUG) 0 else 6
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay)
calendar.set(Calendar.MINUTE, 0)
calendar.set(Calendar.SECOND, 0)
val oneHour = 60 * 60 * 1000L
var delay = oneHour * hour
if (BuildConfig.DEBUG) {
delay = 1 * 60 * 1000L
}
alarmManager.setRepeating(
AlarmManager.RTC_WAKEUP, calendar.timeInMillis, delay, pendingIntent
)
schedulePeriodicWork(context)
}
}
\ No newline at end of file
...@@ -8,7 +8,12 @@ import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_SCAN ...@@ -8,7 +8,12 @@ import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_SCAN
import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_TEXT import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_TEXT
import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WEBSITE import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WEBSITE
import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WIFI import com.base.scanqr.bean.NotificationSendBean.Companion.ACTION_ID_WIFI
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_BATTERY
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_TIMBER
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import com.base.scanqr.helper.EventUtils import com.base.scanqr.helper.EventUtils
import com.base.scanqr.utils.AppPreferences import com.base.scanqr.utils.AppPreferences
...@@ -27,9 +32,9 @@ import java.util.concurrent.atomic.AtomicBoolean ...@@ -27,9 +32,9 @@ import java.util.concurrent.atomic.AtomicBoolean
/** /**
* 发送通知的管理类,方便测试限制条件 * 发送通知的管理类,方便测试限制条件
*/ */
object NotificationManager { object MyNotificationManager {
private val TAG = "NotificationManager" private val TAG = "MyNotificationManager"
private var sendBeanBlockingQueue = ArrayBlockingQueue<NotificationSendBean>(10) private var sendBeanBlockingQueue = ArrayBlockingQueue<NotificationSendBean>(10)
...@@ -144,7 +149,7 @@ object NotificationManager { ...@@ -144,7 +149,7 @@ object NotificationManager {
//是否开启推送 //是否开启推送
if (!popupConfigBean.popupStatus) { if (!popupConfigBean.popupStatus) {
EventUtils.event("Notification_Error", "status=${popupConfigBean.popupStatus}") EventUtils.event("Notification_Error", "status=${popupConfigBean.popupStatus}")
LogEx.logDebug("canSendNotification", "status") LogEx.logDebug(TAG, "status=${popupConfigBean.popupStatus}")
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
MainScope().launch(Dispatchers.Main) { MainScope().launch(Dispatchers.Main) {
context.toast("配置关闭推送") context.toast("配置关闭推送")
...@@ -187,6 +192,11 @@ object NotificationManager { ...@@ -187,6 +192,11 @@ object NotificationManager {
* 只测某些类型 * 只测某些类型
*/ */
private var testWhere = listOf( private var testWhere = listOf(
POPUP_WHERE_LOCK // POPUP_WHERE_LOCK,
// POPUP_WHERE_BATTERY,
// POPUP_WHERE_PACKAGE,
// POPUP_WHERE_WORK_MANAGER,
// POPUP_WHERE_ALARM
POPUP_WHERE_TIMBER
) )
} }
\ No newline at end of file
...@@ -6,11 +6,12 @@ import android.content.Intent ...@@ -6,11 +6,12 @@ import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.os.BatteryManager import android.os.BatteryManager
import android.os.Build import android.os.Build
import com.base.scanqr.bean.NotificationSendBean
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_BATTERY import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_BATTERY
import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import com.base.scanqr.fcm.notification.MyNotificationManager
import com.base.scanqr.helper.EventUtils import com.base.scanqr.helper.EventUtils
import com.base.scanqr.utils.AppPreferences import com.base.scanqr.utils.AppPreferences
import com.base.scanqr.utils.KotlinExt.currentDate
import com.base.scanqr.utils.LogEx import com.base.scanqr.utils.LogEx
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
...@@ -43,18 +44,6 @@ class BatteryStatusReceiver() : BroadcastReceiver() { ...@@ -43,18 +44,6 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
} }
/**
* 当前天推送数量
*/
private var todayBatteryPush = 0
get() {
return AppPreferences.getInstance().getInt("todayBatteryPush_${currentDate()}", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("todayBatteryPush_${currentDate()}", value, true)
}
/** /**
* 上次成功推送 * 上次成功推送
*/ */
...@@ -75,27 +64,13 @@ class BatteryStatusReceiver() : BroadcastReceiver() { ...@@ -75,27 +64,13 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
if (!popupConfigBean.batteryS) return false if (!popupConfigBean.batteryS) return false
val popupBatteryCount = popupConfigBean.popupBatteryValue
val flag1 = todayBatteryPush <= popupBatteryCount
val minute = 60 * 1000L val minute = 60 * 1000L
val interval = popupConfigBean.popupBatteryInterval val interval = popupConfigBean.popupBatteryInterval
val passTime = System.currentTimeMillis() - batteryLastPushTime val passTime = System.currentTimeMillis() - batteryLastPushTime
val flag2 = batteryLastPushTime == 0L || passTime > interval * minute val flag = batteryLastPushTime == 0L || passTime > interval * minute
val flag = flag1 && flag2
if (!flag) { if (!flag) {
EventUtils.event( EventUtils.event("Notification_Error", "interval=$interval passTime=$passTime where=$POPUP_WHERE_BATTERY")
"Notification_Error", "todayBatteryPush=$todayBatteryPush " +
"popupBatteryCount=$popupBatteryCount where=$POPUP_WHERE_BATTERY"
)
LogEx.logDebug(
"canSendNotification", "Notification_Error todayBatteryPush=$todayBatteryPush " +
"popupBatteryCount=$popupBatteryCount where=$POPUP_WHERE_BATTERY"
)
} }
return flag return flag
} }
...@@ -104,12 +79,9 @@ class BatteryStatusReceiver() : BroadcastReceiver() { ...@@ -104,12 +79,9 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
/** /**
* 推送成功后保存值 * 推送成功后保存值
*/ */
fun saveBatteryPushedData(where: String, actionId: String) { fun saveBatteryPushedData() {
if (where == POPUP_WHERE_BATTERY) {
todayBatteryPush += 1
batteryLastPushTime = System.currentTimeMillis() batteryLastPushTime = System.currentTimeMillis()
} }
}
} }
...@@ -117,6 +89,7 @@ class BatteryStatusReceiver() : BroadcastReceiver() { ...@@ -117,6 +89,7 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
private var currentBatteryPercentage = 0f private var currentBatteryPercentage = 0f
override fun onReceive(context: Context, intent: Intent?) { override fun onReceive(context: Context, intent: Intent?) {
// LogEx.logDebug(TAG, "onReceive")
val action = intent?.action val action = intent?.action
when (action) { when (action) {
...@@ -128,16 +101,34 @@ class BatteryStatusReceiver() : BroadcastReceiver() { ...@@ -128,16 +101,34 @@ class BatteryStatusReceiver() : BroadcastReceiver() {
//避免频繁触发 //避免频繁触发
val changeValue = currentBatteryPercentage - batteryPercentage val changeValue = currentBatteryPercentage - batteryPercentage
if (batteryPercentage < 21 && changeValue.absoluteValue >= 1f) { if (batteryPercentage < popupConfigBean.popupBatteryValue && changeValue.absoluteValue >= 1f) {
//推送次数没有达到限制并且展示的最小时间间隔大于配置时间(分钟) //推送次数没有达到限制并且展示的最小时间间隔大于配置时间(分钟)
// NotificationUiUtil.sendNotificationIfCan(context, POPUP_WHERE_BATTERY, null)
LogEx.logDebug(TAG, "onReceive changed")
val sendBean = NotificationSendBean(context, POPUP_WHERE_BATTERY,
canSend = {
canBatteryStatusReceiverPush()
},
sendSuccess = {
saveBatteryPushedData()
})
MyNotificationManager.submitSendBean(sendBean)
} }
currentBatteryPercentage = batteryPercentage currentBatteryPercentage = batteryPercentage
} }
Intent.ACTION_POWER_CONNECTED -> { Intent.ACTION_POWER_CONNECTED -> {
// NotificationUiUtil.sendNotificationIfCan(context, POPUP_WHERE_BATTERY, null) LogEx.logDebug(TAG, "onReceive connected")
val sendBean = NotificationSendBean(context, POPUP_WHERE_BATTERY,
canSend = {
canBatteryStatusReceiverPush()
},
sendSuccess = {
saveBatteryPushedData()
})
MyNotificationManager.submitSendBean(sendBean)
} }
} }
......
...@@ -5,8 +5,10 @@ import android.content.Context ...@@ -5,8 +5,10 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.os.Build import android.os.Build
import com.base.scanqr.bean.NotificationSendBean
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import com.base.scanqr.fcm.notification.MyNotificationManager
import com.base.scanqr.helper.EventUtils import com.base.scanqr.helper.EventUtils
import com.base.scanqr.utils.AppPreferences import com.base.scanqr.utils.AppPreferences
import com.base.scanqr.utils.KotlinExt.currentDate import com.base.scanqr.utils.KotlinExt.currentDate
...@@ -95,12 +97,10 @@ class PackageStatusReceiver() : BroadcastReceiver() { ...@@ -95,12 +97,10 @@ class PackageStatusReceiver() : BroadcastReceiver() {
/** /**
* 推送成功后保存值 * 推送成功后保存值
*/ */
fun savePackagePushedData(where: String, actionId: String) { fun savePackagePushedData() {
if (where == POPUP_WHERE_PACKAGE) {
todayPackagePush += 1 todayPackagePush += 1
packageLastPushTime = System.currentTimeMillis() packageLastPushTime = System.currentTimeMillis()
} }
}
} }
...@@ -110,8 +110,13 @@ class PackageStatusReceiver() : BroadcastReceiver() { ...@@ -110,8 +110,13 @@ class PackageStatusReceiver() : BroadcastReceiver() {
LogEx.logDebug(TAG, "onReceive action=$action") LogEx.logDebug(TAG, "onReceive action=$action")
if (action == Intent.ACTION_PACKAGE_ADDED || action == Intent.ACTION_PACKAGE_REMOVED) { if (action == Intent.ACTION_PACKAGE_ADDED || action == Intent.ACTION_PACKAGE_REMOVED) {
// NotificationUiUtil.sendNotificationIfCan(context, POPUP_WHERE_PACKAGE)
}
val sendBean = NotificationSendBean(context, POPUP_WHERE_PACKAGE, canSend = {
canPackageStatusReceiverPush()
}, sendSuccess = {
savePackagePushedData()
})
MyNotificationManager.submitSendBean(sendBean)
}
} }
} }
\ No newline at end of file
...@@ -8,7 +8,7 @@ import android.os.Build ...@@ -8,7 +8,7 @@ import android.os.Build
import com.base.scanqr.bean.NotificationSendBean import com.base.scanqr.bean.NotificationSendBean
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_LOCK
import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import com.base.scanqr.fcm.notification.NotificationManager import com.base.scanqr.fcm.notification.MyNotificationManager
import com.base.scanqr.helper.EventUtils import com.base.scanqr.helper.EventUtils
import com.base.scanqr.utils.AppPreferences import com.base.scanqr.utils.AppPreferences
import com.base.scanqr.utils.KotlinExt.currentDate import com.base.scanqr.utils.KotlinExt.currentDate
...@@ -39,7 +39,7 @@ class ScreenStatusReceiver : BroadcastReceiver() { ...@@ -39,7 +39,7 @@ class ScreenStatusReceiver : BroadcastReceiver() {
POPUP_WHERE_LOCK, POPUP_WHERE_LOCK,
canSend = { canScreenStatusReceiverPush() }, canSend = { canScreenStatusReceiverPush() },
sendSuccess = { saveScreenPushedData() }) sendSuccess = { saveScreenPushedData() })
NotificationManager.submitSendBean(sendBean) MyNotificationManager.submitSendBean(sendBean)
} }
} }
} }
......
package com.base.scanqr.fcm package com.base.scanqr.fcm.timer
import com.base.scanqr.MyApplication import com.base.scanqr.MyApplication
import com.base.scanqr.bean.NotificationSendBean
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_TIMBER
import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean import com.base.scanqr.bean.config.PopupConfigBean.Companion.popupConfigBean
import com.base.scanqr.fcm.notification.MyNotificationManager
import com.base.scanqr.fcm.receiver.ScreenStatusReceiver import com.base.scanqr.fcm.receiver.ScreenStatusReceiver
import com.base.scanqr.utils.LogEx
import com.base.scanqr.utils.LogEx.logDebug import com.base.scanqr.utils.LogEx.logDebug
import java.util.Timer import java.util.Timer
import java.util.TimerTask import java.util.TimerTask
...@@ -10,7 +14,6 @@ import java.util.TimerTask ...@@ -10,7 +14,6 @@ import java.util.TimerTask
class TimerManager private constructor() { class TimerManager private constructor() {
private val TAG = "TimerManager"
private var taskTimer: Timer? = null private var taskTimer: Timer? = null
private var isTaskTimerActive: Boolean = false private var isTaskTimerActive: Boolean = false
...@@ -27,7 +30,9 @@ class TimerManager private constructor() { ...@@ -27,7 +30,9 @@ class TimerManager private constructor() {
&& !ScreenStatusReceiver.isSecureLockActive && !ScreenStatusReceiver.isSecureLockActive
&& MyApplication.PAUSED_VALUE != 1 && MyApplication.PAUSED_VALUE != 1
) { ) {
// sendNotificationIfCan(MyApplication.appContext, PopupConstObject.POPUP_WHERE_TIMBER, null) val sendBean =
NotificationSendBean(MyApplication.appContext, POPUP_WHERE_TIMBER, canSend = { true }, sendSuccess = {})
MyNotificationManager.submitSendBean(sendBean)
} }
} }
} }
...@@ -54,9 +59,9 @@ class TimerManager private constructor() { ...@@ -54,9 +59,9 @@ class TimerManager private constructor() {
companion object { companion object {
private val TAG = "TimerManager"
private val instance: TimerManager by lazy((LazyThreadSafetyMode.SYNCHRONIZED)) { TimerManager() } private val instance: TimerManager by lazy((LazyThreadSafetyMode.SYNCHRONIZED)) { TimerManager() }
fun changeTimer() { fun changeTimer() {
if (!popupConfigBean.timerS) { if (!popupConfigBean.timerS) {
...@@ -64,6 +69,7 @@ class TimerManager private constructor() { ...@@ -64,6 +69,7 @@ class TimerManager private constructor() {
} else { } else {
val timerDelay: Int = popupConfigBean.timerDelay val timerDelay: Int = popupConfigBean.timerDelay
val timerInterval: Int = popupConfigBean.timerInterval val timerInterval: Int = popupConfigBean.timerInterval
LogEx.logDebug(TAG, "timerDelay=$timerDelay timerInterval=$timerInterval")
val isTaskTimerActive = instance.isTaskTimerActive val isTaskTimerActive = instance.isTaskTimerActive
if (!isTaskTimerActive) { if (!isTaskTimerActive) {
......
package com.base.scanqr.fcm.work
import android.content.Context
import androidx.work.Constraints
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.NetworkType
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.Worker
import androidx.work.WorkerParameters
import com.base.scanqr.bean.NotificationSendBean
import com.base.scanqr.bean.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import com.base.scanqr.fcm.notification.MyNotificationManager
import com.base.scanqr.helper.EventUtils
import java.util.concurrent.TimeUnit
class RepeatingWorker(val appContext: Context, workerParams: WorkerParameters) : Worker(appContext, workerParams) {
override fun doWork(): Result {
// 这里执行你的任务
// 例如,更新UI,发送网络请求等
EventUtils.event("workManager_live")
try {
val sendBean = NotificationSendBean(appContext, POPUP_WHERE_WORK_MANAGER, canSend = { true }, sendSuccess = {})
MyNotificationManager.submitSendBean(sendBean)
} catch (e: Exception) {
EventUtils.event("WorkManager Error")
}
return Result.success()
}
companion object {
const val TAG = "uniqueWorkName"
fun schedulePeriodicWork(context: Context) {
WorkManager.getInstance(context).cancelAllWorkByTag(TAG)
val request = PeriodicWorkRequestBuilder<RepeatingWorker>(15, TimeUnit.MINUTES)
.setConstraints(
Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
)
.build()
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
TAG, ExistingPeriodicWorkPolicy.KEEP, request
)
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment