这就是我所拥有的:
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);
一切正常,即活动在someDistantMillis
启动,并在someIntervalInMillis
之后重复启动
唯一的问题是,如果SomeActivity
已经在someIntervalInMillis
之后运行,则会在堆栈顶部启动另一个SomeActivity
实例。
以下是我想要实现的内容:
AlarmManager
被称为SomeActivity
的实例已在运行,则转到4)否则转到3)SomeActivity
,结束任何想法应该如何完成,或Intent
包含哪些标记(FLAG_ACTIVITY_SINGLE_TOP
似乎不起作用)?
答案 0 :(得分:2)
在boolean
:
Activity
成员字段
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
对象。