0

私のサービスは現在、通話をリッスンしてから、startActivity を介してアクティビティを開始します。

Intent intent = new Intent(context, CallMonitor.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.putExtra("call", call);
startActivity(intent);

そのため、サービスがより多くの電話を受けると、より多くの活動が開始されます。

しかし、サービスが単一のアクティビティのみを開始することを望みます。次回は、すでに開始されているアクティビティに呼び出しを送信する必要があります。そして、活動はそれ自体を更新します。

最善のアプローチは何ですか?

アレクサンダー・ミールケ、ベルリン

4

2 に答える 2

2

すでに開始されているアクティビティを呼び出して、それを前面に戻すintent.addFlags(intent.FLAG_ACTIVITY_REORDER_TO_FRONT)を使用する必要があります。そのアクティビティでは、onResume() メソッドをオーバーライドする必要があります。渡したインテントに基づいてそのアクティビティを更新するには、onNewIntent() メソッドをオーバーライドして、新しく受け取ったインテントを設定する必要があります。例えば

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}

@Override
protected void onResume() {
    super.onResume();
    callString=getIntent().getExtras().getString("call");
    //your code
}

お役に立てれば。

于 2012-09-28T10:39:09.283 に答える
0

何時間ものテストの後、解決策は AndroidManifest.xml の 1 行だけです。

<activity
    ...
    android:launchMode="singleTask"
    ....
</activity>
于 2012-09-30T15:28:02.513 に答える