java - 应用未运行时推送预定通知
问题描述
首先:这个问题与我的上一个问题非常相似,但答案对我没有帮助......
我正在制作一个待办事项应用程序。我被困在推送通知上(即使应用程序没有运行)。我的成就是推送关于待办任务的通知,即使应用程序没有运行。
例如,我在 x/y/2021 的 mm:hh 上做了一个关于家庭作业的新任务。应用程序必须在那个时候推送通知,即使应用程序没有运行
调度(延迟为 10 只是为了调试):
OneTimeWorkRequest notificationWorker = new OneTimeWorkRequest.Builder(NotificationWorker.class)
.setInitialDelay(10, TimeUnit.SECONDS)
.setInputData(new Data.Builder().putString("title", "Note").build()).build();
WorkManager workManager = WorkManager.getInstance(this);
workManager.enqueue(notificationWorker);
类扩展工人:
@NonNull
@Override
public Result doWork() {
NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
String date = getInputData().getString("date");
String time = getInputData().getString("time");
String title = getInputData().getString("title");
String description = getInputData().getString("description");
int delay = getInputData().getInt("delay", 0);
Notification notification = new NotificationCompat.Builder(getApplicationContext(), "note")
.setSmallIcon(R.mipmap.logo)
.setContentTitle(title)
.setContentInfo(date + " at " + time)
.setContentText(description)
.build();
notificationManager.notify(1, notification);
return Result.success();
}
解决方案
老实说,我没有阅读您的代码,但请看一下 workManager(因为它是为这些事情设计的):
Android workManager 文档:
WorkManager 是一种 API,它可以轻松安排可延迟的异步任务,即使应用程序退出或设备重新启动,这些任务也会运行。WorkManager API 是所有先前 Android 后台调度 API(包括 FirebaseJobDispatcher、GcmNetworkManager 和 Job Scheduler)的合适且推荐的替代品。WorkManager 将其前身的功能整合到一个现代、一致的 API 中,该 API 可以追溯到 API 级别 14,同时还考虑到电池寿命。
工作经理:https ://developer.android.com/topic/libraries/architecture/workmanager
示例(我认为这是您想要的):https ://medium.com/@ifr0z/workmanager-notification-date-and-time-pickers-aad1d938b0a3
推荐阅读
- typescript - 如何模拟 jest.mock 等 mocha 生态系统中的整个类/模块级依赖项?
- php - 如何在 ajax 中发送 http_response_code
- google-apps-script - 想要从我的谷歌表中更新 Adobe CS 下拉列表
- swift - 如何从 [(String?, [Contact])]() 获取联系人数组?
- java - 如果跳过 maven 测试,则跳过声纳插件执行
- python - 如何防止用户按回车键?
- sparql - dbpedia 上的 SPARQL 查询:查找丈夫比她们年轻的女性
- laravel - Laravel 8 @extends 参数不为空条件
- python - Django:如何订购查询集并将一些项目移动到查询集的末尾
- sql-server - 在 SQL 中为时间序列数据创建滚动窗口