android:报警任务在应用程序关闭时关闭
在我的应用程序中,我希望每隔几分钟执行一次任务,为此我添加了一个报警管理器,以在经过的时间运行。代码很简单:android:报警任务在应用程序关闭时关闭
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应用程序。如果我去任务管理器并运行清除内存命令,我的应用程序将关闭,并且不会收到任何警报通知。
在这种情况下,我如何在我的代码中继续接收报警通知?
如果我去任务管理器,并运行清除内存命令,我的应用程序关闭,我没有得到任何警报通知。
由于标准Android中不存在“清除内存命令”,因此只有设备制造商才能知道此功能的准确实现。
在这种情况下,我如何在我的代码中继续接收报警通知?
也许你没有。最有可能的是,设备制造商正在执行Force Stop在“设置”中执行的一些操作,包括未更改警报。您可以在“运行清除内存命令”之前和之后运行adb shell dumpsys alarm
来确认此理论,以查看警报发生了什么变化。
请注意,即使在缺少“清除内存命令”的设备上,用户也可以强制停止您的设置,并取消警报。
试试这个:
为您的活动,清单中的XML,放:
android:persistent="true"
编辑:
请访问以下链接:https://groups.google.com/forum/#!topic/android-platform/nU0e3aoBlSY和http://developer.android.com/reference/android/app/Service.html#startForeground%28int,%20android.app.Notification%29
不起作用。
请看我编辑的答案。 – Shrikant
谢谢 - 如果我有服务,这些链接会有所帮助,但我不知道。我尽量避免使用服务,我使用警报接收器实现了我的应用程序,然后在将其更改为服务之前,我想尝试找到一种方法将其修复到实际的表单中。 –
用户有停止使用应用程序的方法(关闭按钮),我需要的是确保只有用户可以关闭应用程序而不关闭操作系统。 –
@ZelterAdy:你可以建立自己的移动操作系统。或者,您可以下载Android源代码,从设置中删除强制停止按钮,重建该源代码,将其转换为ROM模块,然后在任何可以使用的设备上安装该ROM模块。否则,用户可以对其设备进行最终控制,包括设备制造商提供的强制停止和任何等价物。 – CommonsWare