我已经尝试过使用setRepeating方法的Alarm manager类来实现日常提醒。但它只能在库存的android设备上正常工作。大多数中文设备未能收到提醒。
他们大多数建议使用“ Evernote android-job”库。但这已被弃用,并提到使用WorkManager。
Work Manager不适合精确的计时操作。
请帮助我实现日常提醒。
尝试Firebase jobdispatcher github.com/firebase/firebase-jobdispatcher-android
FirebaseJobDispatcher jobDispatcher = new FirebaseJobDispatcher(
new GooglePlayDriver(mContext));
Job networkJob = jobDispatcher.newJobBuilder()
.setService(MyJobService.class)
.setTag(notificationTime)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(startSeconds, startSeconds + 1))
.setLifetime(Lifetime.FOREVER)
.setReplaceCurrent(true)
.setConstraints(Constraint.ON_ANY_NETWORK, Constraint.DEVICE_IDLE)
.build();
jobDispatcher.mustSchedule(networkJob);
int resultCodeStatus = jobDispatcher.schedule(networkJob);
if (resultCodeStatus != FirebaseJobDispatcher.SCHEDULE_RESULT_SUCCESS) {
Log.d("JOB_TAG", "Job ERROR ON SCHEDULE");
} else {
Log.d("JOB_TAG", "Job scheduled");
}
例如,如果您确实需要确切的时间,也许最好使用CRON作业从Firebase Messaging(在准确的时间)发送消息。
在应用程序中,您需要扩展FirebaseMessagingService()
并调用该方法以在onMessageReceived
中触发提醒(您也可以向下发送一些数据)。
此方法将在所有设备上都有效,并且可以抵抗应用程序更新,操作系统更新和电话重启。