如何解决如何在应用关闭时检查更新?
我的应用程序非常简单:它使用 Picasso 从静态 URL 下载 JPG,然后显示它。但是,URL 后面的图片会定期更新,而不会更改 URL 本身。发生这种情况时,应用程序必须显示有关它的通知,即使该应用程序自启动后尚未启动。
我的问题是:推荐的现代方法是什么?
我最大的问题是很多教程和文档都包含 3 年以上的旧信息,这很令人困惑,这对我来说是正确的,而且不会过时。
目前我的概念是有一个订阅启动事件的 BroadcastReceiver
。这会以 JobService
开头 Intent
,并且 onStartJob
方法显示通知。我是在这里还是我错过了什么?
编辑:
感谢 CommonsWare 的评论,WorkManager
是您要走的路。
我已经编写了自己的 Worker
类并尝试在 Work
的 MainActivity
方法中加入一个 onCreate
:
if (firstRun) {
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresStorageNotLow(true)
.build();
PeriodicWorkRequest updateRequest = new PeriodicWorkRequest.Builder(NewPaperWorker.class,30,TimeUnit.MINUTES)
.setConstraints(constraints)
.addTag("update")
.build();
// Enqueue the work
WorkManager
.getInstance(this.getApplicationContext())
.enqueue(updateRequest);
// After starting the work,the firstRun variable can be set to false
final SharedPreferences preferences = this.getSharedPreferences("PREFERENCE",MODE_PRIVATE);
preferences.edit()
.putBoolean("firstRun",false)
.apply();
}
Worker
显示通知,这是它唯一的工作。它确实是第一次发送通知,但之后,尽管PeriodicWorkRequest
,它似乎完全停止。根据开发人员指南,它应该每 30 分钟定期显示一次通知。我错过了什么?
我有一台小米红米 Note 5 并为该应用启用了自动启动。
解决方法
WorkManager
是原始问题的解决方案,使用起来非常简单直接,谢谢CommonsWare!
经过测试,我也找到了第二个问题的解决方案。上面的代码绝对没问题,不需要修改一个字符。真正的问题是中国手机,我不得不关闭我的应用程序的电池限制才能使代码正常工作。
在小米红米 Note 5 上它是Battery & performance
-> Battery entry/Settings icon
-> App battery saver
-> 搜索应用 -> No restrictions
如果它不适合你,也许Apps
-> Permissions
-> Autostart
-> Turn on
将解决这个问题。
可以在 here 和 here 中找到关于此的其他信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。