如何在应用程序关闭时检查更新?

How to check for updates when the app is closed?

我的应用程序非常简单:它使用 Picasso 从静态 URL 下载 JPG,然后显示它。然而 URL 背后的图片会定期更新,而不会更改 URL 本身。发生这种情况时,应用程序必须显示有关它的通知,即使应用程序自启动以来尚未启动。

我的问题是:推荐的现代方法是什么?

我最大的问题是很多教程和文档包含 3 年以上的信息,这很令人困惑,但它对我来说是正确的,而且还没有过时。
目前我的概念是有一个 BroadcastReceiver 订阅了一个启动事件。这会启动带有 IntentJobService,并且 onStartJob 方法会显示通知。我就在这里还是我错过了什么?

编辑:
感谢 CommonsWare 的评论,WorkManager 是正确的选择。

我自己写了 Worker class 并试图在 MainActivityonCreate 方法中加入 Work 队列:

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
经过测试,我也找到了第二个问题的解决方案。上面的代码绝对没问题,不需要修改一个字符。真正的问题是中文 phone,我必须关闭我的应用程序的电池限制才能使代码正常工作。
在小米红米 Note 5 上是
Battery & performance -> Battery entry/Settings icon -> App battery saver -> 搜索应用 -> No restrictions
如果它不适合你,也许
Apps -> Permissions -> Autostart -> Turn on 将解决此问题。
有关此的更多信息,请参见 and .