我可以在kotlin中不停止或暂停后台服务吗?(安卓工作室)



我正在制作一个秒表应用程序,并希望我的秒表在应用程序关闭或手机关闭1分钟后继续。我想知道是否有任何方法让我的计时器服务在应用程序暂停后继续工作。在后台服务中,我目前正在使用计时器功能,在应用程序关闭后1分钟停止。我一直在网上寻找解决方案,这些解决方案都指向前台服务,但我非常缺乏经验,不知道如何使它们工作。

这是我的定时器服务(我从youtube上的Code With Cal得到这个)

class TimerService : Service() {
override fun onBind(p0: Intent?): IBinder? = null
private val timer = Timer()
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val time = intent.getDoubleExtra(TIME_EXTRA, 0.0)
timer.scheduleAtFixedRate(TimeTask(time), 0, 1000)
return START_NOT_STICKY
}
override fun onDestroy() {
timer.cancel()
super.onDestroy()
}
private inner class TimeTask(private var time: Double) : TimerTask() {
override fun run() {
val intent = Intent(TIMER_UPDATED)
time++
intent.putExtra(TIME_EXTRA, time)
sendBroadcast(intent)
}
}
companion object {
const val TIMER_UPDATED = "timerUpdated"
const val TIME_EXTRA = "timeExtra"
}

我可以让它成为一个服务,继续当应用程序关闭?谢谢你这么多(注:这是我的第一个应用程序,我很没有经验。如果您还需要什么代码,请告诉我,谢谢!

正如Mike m在评论中回答的那样:不,你不能这么做,但你也不需要/不想这么做。当你的应用程序设置秒表时,你真正需要知道的是当前计时会话的开始时间,以及它现在的时间。如果您将开始时间保存在某个持久的地方(例如,在SharedPreferences中),那么您只需要检索该值并执行一些简单的算术即可正确地重新设置秒表。">

-Thanks so much (-Casper)

相关内容

最新更新