我有以下两个应用程序,A和B。
Application A
有一个等待申请B提前到来的service
。现在,当应用程序 B 出现在前台时,A 的服务将调用执行特定任务的 A 的活动。
现在从 A 的这个活动,我想回到应用程序 B,从那里我来到 B 的活动。
我现在正在尝试的是:
在服务中,
String foregroundProcess = getForgroundProcessName();
现在,如果它与所需的进程匹配,我将调用一个活动:
Intent intent = new Intent(getApplicationContext(),ActivityOfApplicatinA.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("foregroundProcess",foregroundProcess);
startActivity(intent);
现在,从这个活动ActivityOfApplicatinA
,我想回到应用程序B
,这是由以下人员完成的:
Intent intent = getIntent();
name = intent.getStringExtra("foregroundProcess");
Log.d(TAG, "The foreground process was:" + name);
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(name);
startActivity(LaunchIntent);
finish();
我的方法的问题在于我没有返回到应用程序 B 的先前状态。它只是重新启动应用程序 B。我不希望这种情况发生。我想打开应用程序 B,具有以前的状态。
请帮我解决这个问题。
来自文档FLAG_ACTIVITY_REORDER_TO_FRONT
:
Intent LaunchIntent = m_context.getPackageManager().getLaunchIntentForPackage(packageNameOfAppB);
LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(LaunchIntent);
注意:仅当应用程序 B 在活动历史记录 stac k 之前和中启动时才有效。