Фоновая работа приложения
Моя задача: изменять значение в виджете каждые 24 часа. Проблема: фоновый сервис работает только когда приложение не закрыто. А мне нужно, чтобы сервис работал вне зависимости от этого. Заранее: в манифест я все добавил
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initCreate()
initFuncs()
}
private fun initCreate() {
APP_ACTIVITY = this
Paper.init(this)
checkData()
}
private fun initFuncs() {
startBtn.setOnClickListener {
writeData()
startBroadcast()
}
stopBtn.setOnClickListener {
deleteData()
}
}
private fun startBroadcast() {
val intent = Intent(this, MyService::class.java)
val pendingIntent =
PendingIntent.getService(applicationContext, 1, intent, PendingIntent.FLAG_IMMUTABLE)
val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
alarmManager.setInexactRepeating(
AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
pendingIntent
)
Toast.makeText(this, "Alarm will ring after every 15 minutes interval", Toast.LENGTH_LONG)
.show()
}
MyService.kt
class MyService : Service() {
override fun onCreate() {
super.onCreate()
updateWidgetData("update!")
}
private fun updateWidgetData(text: String) {
val context: Context = this
val appWidgetManager = AppWidgetManager.getInstance(context)
val remoteViews = RemoteViews(context.packageName, R.layout.my_widget)
val thisWidget = ComponentName(context, MyWidget::class.java)
remoteViews.setTextViewText(R.id.appwidgetText, text)
appWidgetManager.updateAppWidget(thisWidget, remoteViews)
}
override fun onBind(intent: Intent?): IBinder? {
// TODO: Return the communication channel to the service.
throw UnsupportedOperationException("Not yet implemented")
}
}