Android AlarmManager.setx27;t工作

Android AlarmManager.setx27;t工作,android,android-intent,geolocation,alarmmanager,android-pendingintent,Android,Android Intent,Geolocation,Alarmmanager,Android Pendingintent,我正在制作一个简单的应用程序来定位设备 我已经创建了一个由主活动调用的服务,它每五秒钟调用一个服务来获取坐标 地理定位服务运行良好,但我无法使alarmManager正常运行 intent = new Intent(this,GeoService.class); pi = PendingIntent.getService(this,12345,intent,PendingIntent.FLAG_UPDATE_CURRENT); am = (AlarmManager)this.g

我正在制作一个简单的应用程序来定位设备

我已经创建了一个由主活动调用的服务,它每五秒钟调用一个服务来获取坐标

地理定位服务运行良好,但我无法使alarmManager正常运行

intent = new Intent(this,GeoService.class);
    pi = PendingIntent.getService(this,12345,intent,PendingIntent.FLAG_UPDATE_CURRENT);

    am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.ELAPSED_REALTIME, 0, 5*1000, pi);
对吗?为什么没有每5秒呼叫一次服务?

哪个是您的targetVersion?如果>18,则为正常。5秒是一个过低的值。从文档中可以看出:
注意:从API 19(KITKAT)开始,警报传递是不准确的:操作系统将切换警报,以尽量减少唤醒和电池使用。有新的API支持需要严格交付保证的应用程序;请参见设置窗口(int,long,long,pendingent)和设置精确窗口(int,long,pendingent)。targetSdkVersion早于API 19的应用程序将继续看到以前的行为,在这种行为中,所有报警都会在请求时准确发送。
哪个是您的TARGETKVERSION?如果>18,则为正常。5秒是一个过低的值。从文档中可以看出:
注意:从API 19(KITKAT)开始,警报传递是不准确的:操作系统将切换警报,以尽量减少唤醒和电池使用。有新的API支持需要严格交付保证的应用程序;请参见设置窗口(int,long,long,pendingent)和设置精确窗口(int,long,pendingent)。targetSdkVersion早于API 19的应用程序将继续看到以前的行为,即所有警报都会在请求时准确发送。