使用Xamarin在VisualStudio中工作,只有< 2周的Android使用经验。
我有一个IntentService类,我想使用警报启动。 IntentService的这种美妙之处在于线程化,它将在完成工作时停止。我不明白如何使用AlarmManager实现警报。我正在关注This Tutorial并使用ELAPSED_REALTIME_WAKEUP示例。
此代码位于OnCreate()
下的MainActivity中 AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, startTrackingService());
alarmMgr.SetInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
trackingSetting,
trackingSetting, intent);
public void startTrackingService() {
Intent i = new Intent(this, StoreLocationService.class ); //
StartService(i);
}
现在我收到以下错误:
必须有返回类型
StartService(i);
预期的标识符; class是关键字
Intent i = new Intent(this.StoreLocationService.class );
我希望有人能看到明显的错误。我希望我对使用StartService(意图服务)启动服务的MainActivity中的Alarm有正确的想法。
其他问题:我想要启动的服务是一次性的位置跟踪事件。虽然我希望计时器/闹钟能够在屏幕关闭时进行此跟踪,但我认为我不能依赖主要活动。错了还是对吗?
我有第二项服务,我稍后会做。它将此数据同步到本地数据库
答案 0 :(得分:1)
编辑:好的,在阅读了Xamarin后,看起来这可能有助于Identifier expected; class is a keyword
错误:
StartService(new Intent(this, typeof(StoreLocationService)));
参考文献:
Xamarin android SendBroadcast from IntentService not received by Activity
编辑2:
我也注意到与Xamarin有一些区别,AlarmManagers getSystemService
应该是GetSystemService
,而且看起来你需要一个PendingIntent
(AlarmManager
需要{ Java也是如此。
一般例子:
Intent i = new Intent(this, typeof(StoreLocationService));
PendingIntent pintent = PendingIntent.GetService(this, 0, i, 0);
AlarmManager alarmMgr = (AlarmManager) this.GetSystemService(Context.AlarmService);
alarmMgr.SetInexactRepeating(AlarmType.RtcWakeup, trackingSetting, trackingSetting, pintent);
请参阅此帖子:https://forums.xamarin.com/discussion/16111/setting-alarmmanager-to-repeat-given-a-specific-time
这篇文章:http://forums.xamarin.com/discussion/7490/alarm-manager