android:应用程序上的报警任务已关闭已终止

android:应用程序上的报警任务已关闭已终止,android,broadcastreceiver,Android,Broadcastreceiver,在我的应用程序上,我希望每隔几分钟执行一次任务,为此,我添加了一个警报管理器,以便在经过的时间内运行。代码很简单: AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(this, OnAlarmReceiver.class); PendingIntent pi = PendingIntent.getBroadcast(this, 0,

在我的应用程序上,我希望每隔几分钟执行一次任务,为此,我添加了一个警报管理器,以便在经过的时间内运行。代码很简单:

    AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(this, OnAlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);

    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime() + 1000 /* Initial run in 1 second */,
            OnBootReceiver.REPEAT_PERIOD, /* 10 minutes */
            pi);
当然我有广播接收器:

public class OnBootReceiver extends BroadcastReceiver {
     //implementation here
}
我在应用程序的主要活动和广播(OnBootReceiver)中运行此代码,以确保我的代码在应用程序启动和每次启动时运行

我的问题是操作系统何时关闭bg应用程序。若我转到“任务管理器”并运行“清除内存”命令,我的应用程序将关闭,并且不会收到任何警报通知

在这种情况下,我如何持续接收代码上的报警通知?

若我转到“任务管理器”并运行“清除内存”命令,我的应用程序将关闭,并且不会收到任何警报通知

由于标准安卓系统中不存在“清除内存命令”,因此此功能的精确实现将仅由您的设备制造商知道

在这种情况下,我如何在代码上不断接收警报通知

也许你没有。最有可能的情况是,设备制造商正在做一些强制停止在设置中所做的事情,包括不安排您的警报。您可以通过在“运行清除内存命令”之前和之后运行adb shell dumpsys alarm来确认这一理论,以查看您的报警发生了什么变化

请注意,即使在缺少“清除内存命令”的设备上,用户也可以强制停止设置,并删除警报。

尝试以下操作:

对于您的活动,在清单xml中,放置:

android:persistent="true"
编辑:


请查看此链接:

用户有办法停止使用应用程序(关闭按钮),我需要的是确保只有用户可以关闭应用程序,而不是操作系统。@ZelterAdy:您可以构建自己的移动操作系统。或者,您可以下载Android源代码,从设置中删除强制停止按钮,重新生成源代码,将其转换为ROM模块,并在您可以安装的任何设备上安装该ROM模块。否则,用户对他们的设备拥有最终控制权,这包括强制停止和设备制造商提供的任何等价物。谢谢-如果我有服务,这些链接会有所帮助,但我没有。我试图避免使用服务,我用一个闹钟接收器实现了我的应用程序,在将其转换为服务之前,我想尝试找到一种方法将其固定在实际表单上。