как запустить сервис Android, даже если приложение закрыто - PullRequest
0 голосов
/ 17 сентября 2018

Я создал простое приложение, которое сохраняет местоположение пользователя с помощью GPS с помощью Xamarin. Это то, что уже делает.

  1. Когда пользователь использует приложение. Место сохранения в порядке.
  2. Когда пользователь свернет приложение. Место сохранения в порядке.

Но когда пользователь закрыл приложение. Место сохранения не в порядке. Во-первых, я использовал IntentService , но все еще не работал, поэтому я попытался Service .

Ниже приведен фрагмент кода.

BroadcastReceiver

[BroadcastReceiver]
public class MyAlarmReceiver : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {

        var serviceIntent = new Intent(context, typeof(MyReverseGeoCodeLocationService));
        serviceIntent.PutExtras(intent);
        context.StartService(serviceIntent);

    }
}

Услуги

[Service]
class MyReverseGeoCodeLocationService : Android.App.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)
    {
        new System.Threading.Tasks.Task(() =>
        {
            CurrentLocationService obj = new CurrentLocationService(new MyLocalStorageService(), this.ApplicationContext);
            obj.OnTimedEvent();

        }).Start();

        return StartCommandResult.Sticky;
    }
}

MainActivity

var alarmIntent = new Intent(this, typeof(MyAlarmReceiver));
var pending = PendingIntent.GetBroadcast(this, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);


var alarmManager = GetSystemService(AlarmService).JavaCast<AlarmManager>();
alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, SystemClock.ElapsedRealtime(), 120000, pending);

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете использовать сигналы тревоги в Android. Посмотрите на эту страницу: https://developer.android.com/training/scheduling/alarms

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...