我创建了一个非常简单的应用程序,它包含一个启动活动(.TestActivity),上面只有一个按钮,第二个活动(.second)只包含一段文字。
然后我从它创建一个.apk文件并将其载入我的手机,打开应用程序,单击按钮并转到第二个活动,按Home键使应用程序离开屏幕,然后按下图标应用程序再次打开它,它恢复我的FIRST活动而不是我期望的第二个活动。
我强行关闭应用程序后,它可以正常工作!这里的问题在哪里?这不是我的手机,因为我已经在其他几个我测试过的设备上看到了这个。它不一定是Eclipse,因为它在Eclipse(和模拟器)上按预期工作,它可能是我打包.apk文件的方式(但即便如此,它是一个非常标准的“导出”,我正在从Eclipse做,所以我'我不确定会是什么)。还有其他想法吗?
这是清单:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".TestActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".second" >
</activity>
</application>
为什么强行关闭应用程序会让它按照我希望第二次工作的方式工作呢?
答案 0 :(得分:1)
这是交易。在Android Manifest中,您可以确定启动应用时要加载的活动。如果由于某种原因,您的应用程序未驻留在任务堆栈中Android将启动该活动。如果您的应用程序位于任务堆栈中,Android可能会选择将其置于最前面,您可以查看离开应用程序时显示的任何活动。事情是你不能指望这一点。如果您希望第一个Activity仅在用户第一次启动应用时显示,您需要设置一个标志,然后在后续启动时,您可以根据该标志自动启动第二个Activity。
答案 1 :(得分:1)
我刚刚找到以下链接:
http://code.google.com/p/android/issues/detail?id=26658
这里有一个不错的解决方法:Home key press behaviour
我理解CaseyB的目标,但我每次都可以重现这一点。如果我的应用程序有内存泄漏或由于不活动或Android需要回收其部分资源而最终被杀,这是一回事。但这对我来说显然是一个错误,我现在只需要解决这个问题。