当应用程序被杀害取消的Android报警(Android alarms cancelled when

2019-09-20 05:16发布

我有了在后台运行,与远程服务器进行通信,并在需要时显示通知给用户的服务的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,但它并没有任何区别。

谢谢。

Answer 1:

退出功能停止服务,释放唤醒锁,并让Android的杀掉该进程

如果你是暗示你有一个连续WakeLock ,除非这只是对那些永远插入的设备上运行,用户将掴你有鳟鱼。

而且,只要它想的Android可以杀死进程。 请不要误会startForeground()作为某种保证Android将永远不会杀死你的进程。

但是,当它从任务管理器杀是看上去很像报警越来越取消。

我不知道什么是“任务管理器”是的,因为有没有在Android系统。 如果你的意思是在设置下运行的应用程序,并单击强制停止的列表,然后是的,取消任何未处理的警报,并防止您的应用以后再运行,直到东西手动启动您的组件之一(例如,用户从启动启动您的应用)。

我做得不对的问候如何正确设置报警?

可能不是。 强制停止绝对抹了你的报警。



Answer 2:

我失去了1个月,我的时间,同样的问题。 最后,我找到了解决办法。 从Android的版本> 21,被称为“自动启动”相继出台的选项,这意味着用户可以实际配置是否有任何应用程序可以自动启动或没有。 所以,请检查您的应用程序是否具有自动启动权限。 此设置的位置可能VAY基于手机制造商。 所以,你需要搜索这个“自动Lanuch”在你的手机设置选项。 即使不工作,尝试从“优化目录”,以及,你可以在设置中找到删除您的应用程序。



文章来源: Android alarms cancelled when application is killed