我有了在后台运行,与远程服务器进行通信,并在需要时显示通知给用户的服务的Android应用程序。 该应用程序还为用户交互的活动。
其中一项要求是,应用程序需要在早上自动启动本身。 在一天结束时,用户可以自由地退出应用程序(退出功能停止服务,释放唤醒锁,并让Android的杀掉该进程)。 为了自动重启,我使用的调度和AlarmManager一个的PendingIntent报警应用程序:
//create intent to alert OnStartReceiver when alarm goes off
Intent i = new Intent(context, OnStartReceiver.class);
i.setAction("com.pointtrace.intents.alarm");
i.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION|Intent.FLAG_FROM_BACKGROUND);
//wrap inside PendingIntent so that it can be used from outside
//our application
PendingIntent pi = PendingIntent.getBroadcast(context, 1, i, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarms = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Log.d("GXT", "Scheduling alarm action(i)=" + i.getAction());
//set alarm to go off at wake time
alarms.set(AlarmManager.RTC_WAKEUP, getWakeTime(), pi);
OnStartReceiver类被注册为接收广播和报警时将重新启动应用程序。
除非用户关闭从任务管理器应用程序,一切工作正常。 如果应用程序是由两种正常退出由Android操作系统杀害或我我调用System.exit(0); 它重新启动的罚款。 但是,当它从任务管理器杀是看上去很像报警越来越取消。
我找不到Android文档在任何可能暗示警报将通过任务管理器被取消。 我做得不对的问候如何正确设置报警?
我试着去掉标志和只用0,但它并没有任何区别。
谢谢。