Начать деятельность в сервисе, когда приложение завершено Android - PullRequest
0 голосов
/ 09 марта 2019

Мне интересно, могу ли я начать действие, когда мое приложение будет остановлено.В событии 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 секунды начинается новое действие,когда приложение работает в фоновом режиме - служба также работает хорошо.

Мой вопрос - возможно ли запустить этот сервис в фоновом режиме?Если это так - что я делаю не так?

Заранее спасибо.

...