gpt4 book ai didi

关闭应用后取消安卓闹钟

转载 作者:IT老高 更新时间:2023-10-28 23:00:19 28 4
gpt4 key购买 nike

AlarmManager 有问题,我设置了用于安排重复警报的代码,运行应用程序后,警报运行正常。即使我点击主页按钮(并且应用程序已暂停),警报仍会按其间隔运行。

问题是如果我打开任务管理器并强制关闭应用程序,那么警报就会停止运行。

这是正常现象吗,有什么办法可以避免这种情况并在关闭应用程序后保持警报运行?

代码如下 - 该方法由 ApplicationContext 类 onCreate() 调用。

 private void scheduleAlarm() {
if (alarmScheduled == true) { return; } // we only need to schedule once.

int alarmInterval = Def.pref(getApplicationContext()).getInt("alarmInterval", 30);

final Intent intent = new Intent(getApplicationContext(), CollectorAlarmReceiver.class);
final PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);

AlarmManager alarmMgr = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);

alarmMgr.cancel(pending); // cancel others.

alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+1000,
alarmInterval*1000, pending);

Def.log(TAG,"scheduleAlarm(): alarm scheduled, interval: "+alarmInterval+" seconds");
alarmScheduled = true;
}

收货人代码:

public void onReceive(Context context, Intent intent) {
Log.i(TAG, "CollectorAlarmReceiver invoked, starting CollectorService in background");

context.startService(new Intent(context, CollectorService.class));

Intent collectorService = new Intent(context,CollectorService.class);
collectorService.putExtra("action", CollectorService.ACTION_BACKGROUND_REQUEST_MESSAGES);

context.sendBroadcast(collectorService);
}

谢谢!

最佳答案

这是正常行为。如果用户自愿强制停止应用程序,则应停止应用程序。否则,您正在创建类似病毒的应用程序。

如果你真的想要,你可以编写另一个服务来监控你的另一个服务是否正在运行,如果服务没有运行,则运行该服务。但这将是另一个应用程序,并且(您希望)用户不会使用任务管理器杀死这个应用程序。

就个人而言,我不会担心。如果用户停止它,他们想停止它。不要惹恼用户。

关于关闭应用后取消安卓闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4643850/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com