Я разрабатываю приложение для Android с Xamarin Forms, которое состоит из интерфейса, а также фонового сервиса.
Мне нужно, чтобы служба работала также, когда интерфейс приложения закрыт.
Если я добавлю «IsolatedProcess = true» в сервис, графический интерфейс все еще будет работать, но сервис вылетит.
Я прочитал много постов с возможными решениями, но они не работают. (Я попытался скомпилировать в режиме выпуска, а также убрать флаг «Использовать общее время выполнения»).
Я компилирую с Android 8.1 (Oreo) в качестве Target Framework.
Целевая среда - Android 4.2.
Я запускаю службу в методе OnCreate класса MainActivity:
Intent testIntent = new Intent(this.BaseContext, typeof(TestService));
StartService(testIntent);
Класс обслуживания:
[Service(IsolatedProcess = true, Exported = true, Label = "TestService")]
public class TestService : Service
{
public override IBinder OnBind(Intent intent)
{
return null;
}
public override void OnCreate()
{
base.OnCreate();
}
[return: GeneratedEnum]
public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
{
Device.StartTimer(new TimeSpan(0, 0, 40), () =>
{
//Code executed every 40 seconds
});
base.OnStartCommand(intent, flags, startId);
return StartCommandResult.Sticky;
}
public override bool StopService(Intent name)
{
return base.StopService(name);
}
}
Если я удалю «IsolatedProcess = true», служба будет работать, но остановится, когда я закрою процесс интерфейса приложения.