我有一个BroadCastReceiver正在侦听传入的短消息。在SmsReceiver中,我想启动一个Activity来处理短信。在很多情况下,Activity在获取消息时正在运行,我不想再次启动它。
事实上,我希望看到如果该Activity已经在运行(可见或尚未被杀死),只需将其置于前面,然后以新任务启动它。
有什么想法吗?
答案 0 :(得分:0)
我从这里和其他地方混合了一些想法,最后解决了这个问题。我在这里为可能有类似情况的其他人编写解决方案:
在amy活动中:
static boolean isRunning = false;
@Override
public void onStart() {
super.onStart();
isRunning = true;
}
public void onStop() {
isRunning = false;
super.onStop();
}
public static boolean isRuuning() {
return isRunning;
}
@Override
public void onCreate(Bundle savedInstanceState) {
smsReceiver = new SmsReceiver();
smsReceiver.setActivity(this);
// ...
}
在我的SmsReceiver中:
static MyActivity myActivity;
public void setActivity(MyActivity MyActivity) {
SmsReceiver.myActivity = myActivity;
}
if( MyActivity.isRuuning() ) {
SmsReceiver.myActivity.receiveNewMessage(smsBody);
} else {
// Create an intent and start it
}
这对我来说很好。