Android 即使设置报警的应用程序被关闭,如何使报警激活?
我对设置闹钟有点困惑。如果有人能提供反馈或一些提示,我们将不胜感激。总而言之,我的情况如下: 在我的应用程序中,我设置了一个警报:Android 即使设置报警的应用程序被关闭,如何使报警激活?,android,alarm,Android,Alarm,我对设置闹钟有点困惑。如果有人能提供反馈或一些提示,我们将不胜感激。总而言之,我的情况如下: 在我的应用程序中,我设置了一个警报: //////////////////////// // Set an alarm // Actually I set a unique id here. The hardcoded value is for simplicity only. int id = 123454321; Intent intent = new Intent(context, MyAla
////////////////////////
// Set an alarm
// Actually I set a unique id here. The hardcoded value is for simplicity only.
int id = 123454321;
Intent intent = new Intent(context, MyAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(context, id, intent, 0);
long firstTime = SystemClock.elapsedRealtime();
firstTime += 10*1000;
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 15*1000, sender);
////////////////////////
////////////////////////
// MyAlarm implementation
public class MyAlarm extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
// Do some periodic work here
}
}
////////////////////////
当我设置闹钟时,一切都很好。当我使用命令时,我可以看到我的警报:
adb shell dumpsys alarm
即使我的应用程序转到后台,我也能看到警报
接下来,我通过
设置-应用程序-管理应用程序-强制停止
当我重新发出命令“adb shell dumpsys alarm”时,我看到我的警报消失了。这让我想到,当我的应用程序进入后台,框架为了释放资源而杀死它时,我的警报也会被杀死。但是,我希望有一个独立于应用程序是否运行的报警。有人知道怎么做吗 我猜您的接收方对象尚未在清单中注册。如果您在清单文件中注册了receiver对象,那么即使您的应用程序未运行,系统也会找到它并调用。我有一个应用程序,该应用程序会设置警报,然后消失 我使用的代码是: 舱单:
<receiver android:name=".AlarmReceiver" android:process=":remote"></receiver>
设置(实际取消旧的并重置):
挂起的帐篷启动接收器,接收器快速工作,发送通知,然后离开。接收者不必发布通知。它可以有目的地开始一项活动,发送祝酒词等
我有一个接收器,可以在开机后恢复警报。(断电时警报确实会消失。)是否考虑使用此服务?即使服务有可能被终止,您也可以对服务给予更高的优先级,这样您的服务被终止的可能性就最小了。是的,我也尝试过服务,但服务也被终止了。我在另一个平台上从Mark Murphy那里得到了关于这个问题的评论,他说手动停止这样的应用程序不会模拟操作系统的行为。谢谢你的提示,但是我在清单中注册了接收者。我在清单文件中有这一行。显然,在手动停止应用程序后,该应用程序启动的所有警报和服务也将被删除。谢谢您的回答。我试过了,但在设置-应用程序-管理应用程序-强制停止后,警报仍被删除强制停止将关闭所有内容。这是过去常被称为阿本德的东西。异常结束。当你通过设置强制停止时,你是在告诉Android操作系统该应用程序有一个大问题,你希望它被完全删除。你的应用程序有问题吗?如果没有,您需要使用finish()正常退出。PS:我错过了您在我第一次阅读时强制停止的事实。谢谢您的澄清。我试图模拟这样一种情况:框架杀死一个应用程序以释放资源。然而,正如它所显示的,“强制停止”并不模拟这种情况。您将有两个主要的例程(有更多的,但通常不需要)将被命中。暂停和暂停。您可以通过按Home键测试暂停。可以通过在主线中执行finish()来测试on-stop。例如,退出按钮。您可以使用log.d来跟踪并确保它们在模拟器中工作。设备上的临时toast消息。
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra("ALARM_MESSAGE", alarmMessage);
PendingIntent receiverIntent =
PendingIntent.getBroadcast(context,
MyConstants.UPDATE_ALARM, intent,
pendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.cancel(receiverIntent); // get rid of previous if unfired.
am.set(AlarmManager.RTC_WAKEUP, calcTime.afterMidnight(), receiverIntent);