确定。我发现很难说清楚。让我试试。
我正在为每次通话使用广播接收器。
<receiver
android:name="com.example.receiveCall"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
在onReceive方法中,我正在开始一项活动。
@Override
public void onReceive(final Context context, Intent intent) {
Handler mHandler = new Handler();
AttendActivity.ctx = context;
Runnable mUpdateTimeTask = new Runnable() {
public void run() {
// do what you need to do here after the delay
// context.startService(new Intent(context, AutoAnswerIntentService.class));
context.startActivity(new Intent(context,
AttendActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
};
mHandler.postDelayed(mUpdateTimeTask, 500);
}
}
当应用程序不可见时,此工作正常。但是,当应用程序可见时。我的活动在InCallScreen之上打开。但是当我关闭AttendActivity时。而不是InCallScreen我的应用程序是可见的。 Incallscreen就在它的上面。
你帮我解决这个问题吗? 期望的输出MyApp - &gt; InCallScreen - &gt; AttendActivity
当前输出 InCallScreen - &gt; MyApp - &gt; AttendActivity
答案 0 :(得分:0)
我建议您阅读此article。它拥有大量有关Android中的活动,任务,应用程序和流程的信息。
我的猜测是你的AttendActivity具有默认的任务亲和力。这意味着如果显示此活动,那么您的整个任务(很可能是您应用程序的所有活动)将被带到前面。
您可以更改此行为。您需要在Manifest中的活动上安装android:taskAffinity。
例如,您可以在清单中为AttendActivity放置android:taskAffinity =“”。这样当它被带到前面时,它不会用它拖动整个应用程序。