着信ショート メッセージをリッスンする BroadCastReceiver があります。SmsReceiver では、アクティビティを開始して SMS を処理したいと考えています。多くの場合、メッセージの取得中にアクティビティが実行されているため、再度開始したくありません。
実際、そのアクティビティが既に実行されている (表示されているか、まだ強制終了されていない) 場合は、それを前面に移動し、そうでない場合は新しいタスクで開始することを確認したいと考えています。
何か案が?
着信ショート メッセージをリッスンする BroadCastReceiver があります。SmsReceiver では、アクティビティを開始して SMS を処理したいと考えています。多くの場合、メッセージの取得中にアクティビティが実行されているため、再度開始したくありません。
実際、そのアクティビティが既に実行されている (表示されているか、まだ強制終了されていない) 場合は、それを前面に移動し、そうでない場合は新しいタスクで開始することを確認したいと考えています。
何か案が?
ここと他の場所からいくつかのアイデアを混ぜ合わせて、最終的に問題を解決しました。同様の状況にある可能性のある他の人のために、ここに解決策を書きます。
エイミーアクティビティで:
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
}
これは私にとってはうまくいきます。