Android - 立即启动报警服务?

时间:2011-12-13 16:35:52

标签: android alarmmanager

我创建了一个On Boot Receiver,每5分钟重复调用一次唤醒意图服务,但是在安装应用程序时无法弄清楚如何立即启动服务..?我不想依赖用户在开始运行之前重启设备!

到目前为止,这是我的代码:

public class OnBootReceiver extends BroadcastReceiver {
private static final int PERIOD = 300000; // check every 5 minutes

@Override
public void onReceive(Context context, Intent intent) {
    AlarmManager mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, OnAlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);

    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60000, PERIOD, pi);
}}

任何人都可以帮助我吗? :)

2 个答案:

答案 0 :(得分:1)

如果要在安装应用程序时设置警报管理器以启动服务,则无法进行此操作。这是一个操作系统限制,如果你愿意,那就是安全性。但是如果你想在应用程序启动时启动服务,只需调用它,它就会继续运行。

答案 1 :(得分:0)

基本上,由于在启动应用程序时创建了Application对象,并且在收到BOOT_COMPLETED Intent时,您可以在自定义Application类的onCreate方法中注册AlarmManager。请注意,每次进程启动时都会实例化Application对象,其中包括临时终止进程以节省资源的情况。但是如果你不以任何方式改变PendingIntent,那么一遍又一遍地注册应该没有问题。

但是,安装时无法启动应用程序,首先必须进行一些用户交互。