我很抱歉标题,我无法找到更好的方式来简要描述我的问题。这是我的情景。有两个应用程序,A和B.应用程序A有一个活动A1,应用程序B有三个活动B1,B2和B3。
活动B1是透明的并且作为代理,我为B1定义了意图过滤器,因此A1可以向B1发出隐式意图。取决于意图'额外的,然后B1会激发一个明确的意图,开始B2或B3,然后完成自己。 B2和B3没有任何意图过滤器,并且应该仅由B1的明确意图触发。 B1 / B2 / B3设计的原因是因为
以下是代理代码'在活动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(例如)。之后,每当我从app A转到app B时,都不会调用B1的onStart(),而是直接调用B2的onResume()。出于某种原因,从A1发射的所有后续意图都不会进入B1。相反,它会恢复B2(或B3,具体取决于第一次调用B1&#39的onStart()时创建的)。我不知道这里有什么问题。请帮忙。感谢。
答案 0 :(得分:0)
让我们分析您的代码:
Intent intent = (Intent) getIntent().clone();//intent -->B1
intent.setClass(this, useB2Activity ? B2.class : B3.class);
//now your intent-->B2/B3
startActivity(intent);//-->start B2/B3
finish();//Finish B1 but B2/B3 is still alive
现在如果你从A打电话给B - >它转到B2 / B3 onResume
,因为B2 / B3还活着!
如果您想每次都启动B1,请修改xml清单中的lanchMode
。
<Activity B1....
android:clearTaskOnLaunch="true"
android:launchMode="singleTop"
>
如果您想在第n次使用中再次调用某个方法,则应将代码从onStart()
移至onResume()
。
public void onResume() {
super.onResume();
// Your code here!
}