我想在我的应用程序中构建一个功能,当我单击按钮时,时间停止器将计数为 5 分钟,但我希望它仍在进行中,但当我进入应用程序后台时,它仍然在进行中?
如何实现我可以使用什么样的工具? 前台服务,通知,据我所知,它与小部件不同?
如何使用相同的自定义通知启动此类服务,不是立即而是在接下来的 20 小时内,或者当我使用某种数据从后端触发我的服务时,然后启动此通知和前台服务?我可以使用协程工作管理器吗?
这个功能应该像在 Spotify 中一样工作。你启动音乐(在我的东西中它只是计时器)然后当我关闭我的应用程序时我有通知打开并接收数据并显示给用户。
最好在
Foreground Service
中启动您的计时器,这样当您的应用程序进入后台时它就不会被打断。你不需要这种东西的小部件,只需一个Foreground Service
就可以完成这项工作。
如果你想安排你的计时器在特定时间运行,正如你所说,最好的方法是使用
WorkManager
(如果你搜索它,你可以找到很多教程)。
要从服务器启动计时器,一种方法是使用
Silent Push Notification
(不通知用户的通知,只是向应用程序发送一些数据)并在您的应用程序收到特定类型的 时启动计时器服务Push Notification
.
1 Yes 在这种情况下最好使用带有通知的前台服务,该通知将在一段时间内从服务中更新。
2 WorkManager 有一些时间窗口来运行作业(电池优化等)。如果您需要准确的时间,我们应该使用警报管理器和我们需要的作业来安排警报操作。在这种情况下,App 将在后台运行,不受任何限制。 如果您的应用以 Android 12 或更高版本为目标,您必须获得“警报和提醒”特殊应用访问权限。添加到清单:
<manifest ...>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
<application ...>
...
</application>