0

我有一个收听传入短消息的广播接收器。在 SmsReceiver 我想启动一个活动来处理短信。在许多情况下,活动在收到消息时正在运行,我不想再次启动它。

事实上,我想看看如果那个 Activity 已经在运行(可见或尚未被杀死),只需将它放在前面,否则用新任务启动它。

任何想法?

4

1 回答 1

0

我混合了这里和其他地方的一些想法,最终解决了这个问题。我在这里为可能有类似情况的其他人编写解决方案:

在艾米活动中:

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
}

这对我来说很好。

于 2012-05-07T21:31:55.453 回答