Android Alarm Receiver未在Jelly Bean上触发

时间:2014-02-27 12:02:57

标签: android service gps broadcastreceiver alarmmanager

我创建了一个应用程序,它包含将GPS坐标发送到服务器的服务。所以目前我通过Alarm类激活服务,即如果我们说60秒,那么应该触发Alarm类并启动服务然后关闭。

这些是在android 2.3.6版本上运行的所有功能。但是,如果我尝试使用Jelly bean报警接收器并且广播接收器没有呼叫。

I have registered the receiver in the manifest file like below,

   <receiver android:name="com.receivers.AlarmReceiver"/>

在下面的Alarm Receiver类中,

public class AlarmReceiver extends BroadcastReceiver 
{
        @Override
        public void onReceive(Context context, Intent intent) 
        {
        //Intent i = new Intent(context, GPSLoggerService.class);
        //i.setAction("com.varma.samples.gpslogger.receivers.KEEP_ALIVE");
        //i.putExtra("screen_state", screenOff);
        //context.startService(i);
        //System.out.println("hi::");
        context.startService(new Intent(context,GPSLoggerService.class));
        }
}

最后我有GPSLOggerservice类将lat发送给服务器。

所以我的问题是,当时间到来时,不会调用Alarm接收器,因此我无法启动服务。如何在Jelly Bean等更高版本上克服这个问题呢?然而,正如我之前测试过的那样,它在2.3.6等较低版本上运行良好。

1 个答案:

答案 0 :(得分:0)

从Honeycomb的发布版本开始,BroadcastReceivers会以停止状态安装,并且在应用程序实际运行之前不会触发,即您必须拥有至少运行一次的活动。

请查看@ Android 3.1和@ Background Regression