我创建了一个应用程序,它包含将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等较低版本上运行良好。
答案 0 :(得分:0)
从Honeycomb的发布版本开始,BroadcastReceivers会以停止状态安装,并且在应用程序实际运行之前不会触发,即您必须拥有至少运行一次的活动。
请查看@ Android 3.1和@ Background Regression