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 中的一行代码:

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