我创建了一个简单的应用,该应用使用Xamarin使用GPS保存用户的位置。这已经在做。
但是当用户关闭应用程序时。保存位置不正确。首先是我使用了 IntentService ,但仍然无法正常工作,所以我尝试了 Service 。
下面是我的代码段。
广播接收器
[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);
答案 0 :(得分:0)
您可以在android中使用Alarms。 看这个页面: https://developer.android.com/training/scheduling/alarms