Android AlarmManager 报警启动服务

标签 android android-intent xamarin

使用 VisualStudio 和 Xamarin 工作,只有 < 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); 
    
  • 需要标识符;类是关键字

    Intent i = new Intent(this.StoreLocationService.class );
    

我希望有人能看到明显的错误。我希望我对使用 StartService(Intent Service) 启动服务的 MainActivity 中的 Alarm 有正确的想法。


附加问题:我要启动的服务执行一次性位置跟踪事件。虽然我希望计时器/闹钟在屏幕关闭时工作以进行此跟踪,但我认为我不能因此依赖主要 Activity 。对还是错?

我有第二个服务,我稍后会做。它将此数据同步到本地数据库

最佳答案

编辑:好的,在阅读 Xamarin 之后,看起来这可能有助于预期的 Identifier;类是关键字 错误:

StartService(new Intent(this, typeof(StoreLocationService)));

引用资料:

Xamarin android SendBroadcast from IntentService not received by Activity

http://developer.xamarin.com/guides/android/application_fundamentals/backgrounding/part_2_android_services/

编辑 2: 我还刚刚注意到 Xamarin 与 AlarmManagers 有一些差异 getSystemService 应该是 GetSystemService,而且看起来你需要一个 PendingIntent(这Java 中的 AlarmManager 也需要)。

一般例子:

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

关于Android AlarmManager 报警启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29271472/

相关文章:

java - 将 Bundle 转换为 JSON

android - 三星等 ionic 与Android应用内结算

android - 如何在android : similar to email中选择附件

java - Android:intent.putExtra() 更改对象?

c# - 如何用约束对齐两个元素?

android - Chrome 自定义选项卡、隐藏关闭按钮和处理设备后退按钮

java - 如何自动启动另一个 Activity ?

android - 在 phonegap android 中缩放内容(由 angularjs 注入(inject))

android - 如何通过深度链接在不丢失 Activity 堆栈(或应用程序状态)的情况下恢复 Android 应用程序?

c# - 在 Xamarin 中实现计步器