我创建了一个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);
}}
任何人都可以帮助我吗? :)
答案 0 :(得分:1)
如果要在安装应用程序时设置警报管理器以启动服务,则无法进行此操作。这是一个操作系统限制,如果你愿意,那就是安全性。但是如果你想在应用程序启动时启动服务,只需调用它,它就会继续运行。
答案 1 :(得分:0)
基本上,由于在启动应用程序时创建了Application对象,并且在收到BOOT_COMPLETED Intent时,您可以在自定义Application类的onCreate方法中注册AlarmManager。请注意,每次进程启动时都会实例化Application对象,其中包括临时终止进程以节省资源的情况。但是如果你不以任何方式改变PendingIntent,那么一遍又一遍地注册应该没有问题。
但是,安装时无法启动应用程序,首先必须进行一些用户交互。