情景:
当同时设置两个警报时,只应显示它们。
我的问题:
我有一个广播接收器,它将时间转发给AlarmGoOffActivity。但是,我需要在转发意图之前检查AlarmGoOffActivity是否已经运行。从我在SO中看到的一个答案。我尝试了这种方法。早些时候,两个警报都被触发了。现在,现在都没有报警。
代码
MyBroadCastReceiver.java
if (AlarmGoOffActivity.running) {
BLog("AlarmActivity running");
} else {
BLog("AlarmActivity not running ");
//set this variable true so that new broadcasts are not entertained
AlarmGoOffActivity.running = true;
Intent intent1 = new Intent(context, AlarmGoOffActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent1.putExtra(DBHelper.COLUMN_ID, id);
String ext = extras.getString(DBHelper.TASK_TITLE);
if (ext != null) {
intent1.putExtra(DBHelper.TASK_TITLE, ext);
}
BLog("Starting alarm fire");
context.startActivity(intent1);
}
AlarmGoOffActivity.java
public class AlarmGoOffActivity extends ActionBarActivity {
public static boolean running = false;
.....
@Override
public void onDestroy() {
super.onDestroy();
//changing the lock to false here. So a new one can start from
//broadcastreceiver
running = false;
}
}
我期待第一个开火。现在,两个人都没有开火。为什么这不起作用?是因为静态变量(我错过了一些概念?)还是因为广播之间的时间间隔为10毫秒或更短。谢谢你的帮助。
答案 0 :(得分:0)
接收方应处理意图然后快速退出。它不应该试图确定Activity
是可见还是活动或其他什么。
相反,您应该有Activity
句柄重新通知。特别是,您可能会发现onNewIntent
对于处理从接收器发送的新意图非常有用。在您的活动中,您可以设置标记以确定如何处理重新通知与Activity
当前所处的状态。