gpt4 book ai didi

android - AlarmManager 没有启动 Activity(当它存在时)

转载 作者:行者123 更新时间:2023-11-29 21:14:43 24 4
gpt4 key购买 nike

这是我所拥有的:

Intent intent = new Intent();
intent.setClass(context,SomeActivity.class);
PendingIntent pending = PendingIntent.getActivity(context,requestCode,intent,PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager alarm = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, someDistantMillis, someIntervalInMillis,pending);

它工作正常,即 Activity 在 someDistantMillis 启动并在 someIntervalInMillis 之后重复启动

唯一的问题是,如果 SomeActivity 已经在 someIntervalInMillis 之后运行,则 SomeActivity 的另一个实例将在堆栈顶部启动。

这里简要介绍一下我想要实现的目标:

  1. Strart,调用AlarmManager
  2. 如果 SomeActivity 的实例已经在运行,则转到 4) 否则转到 3)
  3. 启动SomeActivity,结束
  4. 什么都不做,结束

有什么想法应该如何完成,或者 Intent 应该包含哪些标志(FLAG_ACTIVITY_SINGLE_TOP 似乎不起作用)?

最佳答案

在您的Activity 中创建一个静态boolean 成员字段:

public static boolean running = false;

onStart() 方法中将 running 设置为 true 并在 onStop() 中设置为 false 。然后在你想确定你的 Activity 是否正在运行的地方,只需执行此 if 语句:

if(SomeActivity.running) {
// go to step 4
} else {
// go to step 3
}

static 关键字在这里很重要,因为它意味着 running 字段对于 SomeActivity 类的所有实例都是通用的,因此您不需要不需要访问特定的 SomeActivity 的对象。

关于android - AlarmManager 没有启动 Activity(当它存在时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747964/

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