2012-07-17 89 views
0

这里很奇怪的事情。Android Switched启动活动:旧的启动活动仍然表现如此

我最初有一项活动是启动活动(活动A)。它有与其相关的标签android:launchMode="singleTask"。没问题。我的要求已更改,现在我正在将活动B作为启动活动。我复制了意图过滤器,将名称更改为“.ActivityB”,并且我也将启动模式标记移动了过来。

它似乎工作正常;当我启动应用程序时,我转到活动B.但是,当我从活动B转到活动A,然后单击后退按钮时,应用程序退出并不会重新打开(如果我没有启动模式标记,它将重新打开。 )

另一个例子。如果我从活动A到活动B到活动A到活动B,一切都很好。当我点击回到活动A(如预期的),但是当我再次点击回到活动A的先前实例时(呃哦),然后再次点击并退出应用程序。两次都跳过活动B.

我清楚地忽略了一些东西,但我无法弄清楚什么。我没有重写任何后退按钮功能,并且在我切换启动活动之前,所有工作都完美无缺。

编辑 以下是从我的表现摘录的任何变化

<activity android:name=".ActivityA" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="ActivityB"></activity> 

这里之前,变更后的摘录

<activity android:name=".ActivityB" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="ActivityA"></activity> 
+0

您是否复制或_move_意向过滤器?不知道如果您有两项活动,并且在电子邮件上使用启动意图过滤器会发生什么情况 – Russ 2012-07-17 03:26:58

+0

否,请参阅编辑,另外我听说您实际上可以将两项活动声明为启动活动(也许我听错了)。我不知道那是什么.. – Sababado 2012-07-17 03:44:05

回答

1

听起来活动B越来越finish()叫什么。我建议在OnCreateOnPauseOnResumeOnResumeOnDestroy中加入一些日志语句,这样您就可以监控活动B的生命。它是一个高地活动(只能有1个),因此您不必担心创建多个实例。您也可以查看/覆盖onNewIntent并在那里放置一些日志记录调用。

不是一个真正的答案,而是在开始活动A后或者在活动B在后台进行并且您已经忘记它时,甜甜圈或甜甜圈将某个人拨打finish()电话。

如果情况并非如此,我会对活动B如何/何时死亡感兴趣。通常,如果它在返回时出现一些错误而停止,则Android会向您发出咆哮,但由于您没有提及我猜测它不是。

+0

如果我可以送你甜甜圈,我会。最后一次加法你已经死了。本来我是_finishing_活动B,当它回到活动A(家庭活动)时,因为活动B不再需要任何东西,所以我想我会完成它并释放一些资源。 – Sababado 2012-07-17 03:56:40

+0

我更喜欢实际上的美元:D – Russ 2012-07-17 04:02:40