我有一个收听传入短消息的广播接收器。在 SmsReceiver 我想启动一个活动来处理短信。在许多情况下,活动在收到消息时正在运行,我不想再次启动它。
事实上,我想看看如果那个 Activity 已经在运行(可见或尚未被杀死),只需将它放在前面,否则用新任务启动它。
任何想法?
我有一个收听传入短消息的广播接收器。在 SmsReceiver 我想启动一个活动来处理短信。在许多情况下,活动在收到消息时正在运行,我不想再次启动它。
事实上,我想看看如果那个 Activity 已经在运行(可见或尚未被杀死),只需将它放在前面,否则用新任务启动它。
任何想法?
我混合了这里和其他地方的一些想法,最终解决了这个问题。我在这里为可能有类似情况的其他人编写解决方案:
在艾米活动中:
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
}
这对我来说很好。