Процессы, которые необходимо запускать в течение длительного периода, можно создать с помощью setForeground.
Поэтому я решил использовать этот метод для создания службы переднего плана. Вот что я сделал:
MainActivity.kt
Код: Выделить всё
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val request = OneTimeWorkRequest.Builder(MyWorker::class.java).build()
WorkManager.getInstance(this).enqueue(request)
setContent {
Text("The app is now running")
}
}
}
Код: Выделить всё
class MyWorker(context: Context, parameters: WorkerParameters):
CoroutineWorker(context, parameters) {
override suspend fun doWork(): Result {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
"1",
"MAIN",
NotificationManager.IMPORTANCE_HIGH
)
val notificationManager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
val notification = NotificationCompat.Builder(applicationContext,"1")
.setSmallIcon(R.drawable.ic_launcher_background)
.setContentTitle("The test app is running")
.build()
val x = if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
ForegroundInfo(1, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE)
} else {
ForegroundInfo(1, notification)
}
setForeground(x)
return Result.success()
}
}
Код: Выделить всё
...
...
Подробнее здесь: https://stackoverflow.com/questions/785 ... und-method
Мобильная версия