Мне интересно, могу ли я начать действие, когда мое приложение будет остановлено.В событии OnCreate я запускаю свой сервис
StartService(new Intent(this, typeof(SampleService)));
[Service(Exported = true)]
public class SampleService : Service
{
CancellationTokenSource _cts;
public override IBinder OnBind(Intent intent)
{
return null;
}
public override StartCommandResult OnStartCommand(Android.Content.Intent intent, StartCommandFlags flags, int startId)
{
myService = this;
var t = new Java.Lang.Thread(() => {
_cts = new CancellationTokenSource();
Task.Run(async () =>
{
try
{
await ExecutePost(_cts.Token);
}
catch (Exception ex)
{
}
}, _cts.Token);
}
);
t.Start();
return StartCommandResult.Sticky;
}
Метод ExecutePost запускает новое действие:
public async Task ExecutePost(CancellationToken token)
{
await Task.Run(async () =>
{
while (true)
{
try
{
await Task.Delay(3000);
Intent temp = new Intent();
temp.SetClass(myService, typeof(MainActivity));
temp.SetAction(Intent.ActionView);
temp.SetFlags(ActivityFlags.ReorderToFront);
temp.SetFlags(ActivityFlags.NewTask);
myService.StartActivity(temp);
}
catch (Exception ex)
{
}
}
}, token);
}
Когда приложение работает, поведение хорошее - каждые 3 секунды начинается новое действие,когда приложение работает в фоновом режиме - служба также работает хорошо.
Мой вопрос - возможно ли запустить этот сервис в фоновом режиме?Если это так - что я делаю не так?
Заранее спасибо.