我很抱歉标题,我找不到更好的方式来简要描述我的问题。这是我的场景。有两个应用,A 和 B。应用 A 有一个活动 A1,应用 B 有三个活动 B1、B2 和 B3。
Activity B1 是透明的并作为代理工作,我为 B1 定义了意图过滤器,因此 A1 可以向 B1 触发隐式意图。根据意图的额外内容,B1 然后将触发一个明确的意图来启动 B2 或 B3,然后自行完成。B2 和 B3 没有任何意图过滤器,并且应该仅由来自 B1 的显式意图触发。B1/B2/B3设计的原因是因为
- 我拥有应用程序 B,但不是 A,因此我无法更改 A 触发意图的方式
- 我想通过多个活动而不是单个活动来改进应用 B 的用户体验
这是活动 B1 中的“代理代码”
public void onStart() {
super.onStart();
// useB2() is some helper method that looks at intent's extra
// and decides if we should start B2 or B3
boolean useB2Activity = useB2(this.getIntent());
Intent intent = (Intent) getIntent().clone();
intent.setClass(this, useB2Activity ? B2.class : B3.class);
startActivity(intent);
finish();
}
问题:如果我第一次从应用 A 转到应用 B,我可以看到 B1 的 onStart() 被调用,然后它启动 B2(例如)。之后,每当我从应用 A 转到应用 B 时,都不会调用 B1 的 onStart(),而直接调用 B2 的 onResume()。出于某种原因,从 A1 触发的所有后续意图都不会转到 B1。相反,它会恢复 B2(或 B3,具体取决于第一次调用 B1 的 onStart() 时创建的那个)。我不知道这里有什么问题。请帮忙。谢谢。