Фоновая служба в Xamarin.Forms, iOS, Android - PullRequest
0 голосов
/ 16 января 2020

У меня есть фоновая служба в android.

Мой код выглядит следующим образом:

[Service]
public class PeriodicService : Service
{
    public override IBinder OnBind(Intent intent)
    {
        return null;
    }

    public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
    {
        Device.StartTimer(TimeSpan.FromSeconds(5), () =>
             {
                 // code
              });
        return StartCommandResult.Sticky;
    }

}

Класс MainActivity:

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    global::Xamarin.Forms.Forms.Init(this, bundle);
    LoadApplication(new App());

    StartService(new Intent(this, typeof(PeriodicService)));
}

Разрешение AndroidManifest.xml:

<uses-permission android:name="android.permission.PeriodicService" />

Проблема в том, что моя служба работает только в фоновом режиме, когда приложение активно, или на переднем плане, но когда я закрываю приложение, оно не запускается в фоновом режиме.

1 Ответ

0 голосов
/ 27 января 2020

Возможное решение - следовать тому, что Фабио написал в своем посте о том, как создать Бесконечное фоновое задание .

Идея заключается в том, чтобы создать BroadcastReceiver и Android Сервис в манифесте. BroadcastReceiver затем активирует службу с приоритетом переднего плана, когда приложение закрывается. Если вы имеете дело с постом Android 7, то он создал обновление для своего блога, показывающее Исправление .

Просто для лучшего понимания того, как работают базовые c Android. работать, я бы порекомендовал взглянуть на это Android Учебное пособие по услугам

Я также видел эту другую публикацию StackOverflow, которая кажется довольно похожей, так что, возможно, там там тоже будет некоторая полезная информация.

Я не слишком акклиматизировался в этом, но я смог довольно легко следить за постами в блоге, поэтому я надеюсь, что это поможет :). Если кто-нибудь найдет лучшее решение, я хотел бы услышать об этом, так что пометьте (если вы будете так любезны), чтобы я мог оставаться в курсе!

...