Я хочу запустить фоновый сервис таким образом, чтобы он по-прежнему работал, даже если приложение закрыто,
Для этого я сделал сервис, запускающий процесс зависшим, и сделал его процессом.После того, как проблема не исчезла, я провел некоторое исследование и обнаружил, что на последних устройствах Android мы должны запускать такие службы на переднем плане: -при помощи startForegroundService для запуска службы, -and startForeground в onStartCommand службы, -показ уведомления с постоянным каналом,
Я сделал это, но та же проблема, уведомление для службы переднего плана не отображается,
OnStartCommand моей службы:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent,flags,startId);
Intent intent2 = new Intent(this, RDVSearchService.class);
intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent2, 0);
Notification.Builder builder = new Notification.Builder(getApplicationContext())
.setContentTitle("Pratikk")
.setContentText("Subject")
.setSmallIcon(R.drawable.ok_done)
.setContentIntent(pendingIntent);
Notification notif;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
notif = builder.build();
}else{
notif = builder.getNotification();
}
startForeground(1234, notif);
return START_STICKY;
}
как я запускаю службу:
Intent intent = new Intent(context, RDVSearchService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(intent);
}else{
context.startService(intent);
}
Моя декларация обслуживания в манифесте:
<service
android:name=".services.RDVSearchService"
android:exported="false"
android:process=":rdv_search" />