android:警报任务在应用程序被杀死时关闭

时间:2012-12-11 18:18:44

标签: android broadcastreceiver

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

    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应用程序。如果我去任务管理器并运行Clear Memory命令,我的应用程序将关闭,我不会收到任何警报通知。

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

2 个答案:

答案 0 :(得分:2)

  

如果我去任务管理器并运行Clear Memory命令,我的应用程序将关闭,我不会收到任何警报通知。

由于标准Android中不存在“清除内存命令”,因此只有您的设备制造商才能知道此功能的精确实现。

  

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

可能你没有。最有可能的是,设备制造商正在做一些强制停止在设置中执行的操作,包括取消调度警报。您可以通过在运行“清除内存命令”之前和之后运行adb shell dumpsys alarm来确认此理论,以查看警报发生了什么变化。

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

答案 1 :(得分:0)

试试这个:

对于您的活动,在清单xml中,输入:

android:persistent="true"

编辑:

请参阅此链接:https://groups.google.com/forum/#!topic/android-platform/nU0e3aoBlSYhttp://developer.android.com/reference/android/app/Service.html#startForeground%28int,%20android.app.Notification%29