Я создал простое приложение, которое сохраняет местоположение пользователя с помощью GPS с помощью Xamarin. Это то, что уже делает.
- Когда пользователь использует приложение. Место сохранения в порядке.
- Когда пользователь свернет приложение. Место сохранения в порядке.
Но когда пользователь закрыл приложение. Место сохранения не в порядке. Во-первых, я использовал 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);