我有一个Android应用程序,其中包含许多活动。有时会启动错误的活动。
通常情况下,Application子类启动,然后启动活动(StartAct...android:name =“android.intent.action.MAIN”,android:name =“android.intent.category.LAUNCHER”)执行一些操作,然后启动InitializeActivity。这个活动也会执行一些工作,然后启动我的主显示活动(MainAct)。前两个活动都会进行一些必要的初始化,包括在启动MainAct之前设置静态“isInitialized”标志。
使用特定意图(...activity.class指定)通过startActivity()启动活动,并在startActivity()之后调用finish()。
然而,以下情况有时会发生,我不知道为什么......
简而言之,应用程序被杀死,当按下图标启动它时,它直接跳转到第三个(MainAct)活动。这导致应用程序检测到错误(isInitialized标志为false)并停止:
- 用图标正常启动应用程序: - ...Application子类启动,还启动一些工作线程 - ...StartActivity运行,然后启动InitializeActivity并完成 - ...InitializeActivity运行,然后设置isInitialized并启动MainAct并完成 - ...MainAct启动,运行正常 - ...按下Home按钮,运行Angry Birds - ...MainAct记录onPause,然后onStop。 - ...由Application子类拥有的工作线程继续定期执行操作并记录。 - 25分钟后,整个应用程序突然被杀死。这个观察是基于日志活动的结束, - 时间过去了 - 按下Home按钮 - 按下应用程序的Launcher ICON - Application子类onCreate被调用并返回 - *MainAct.onCreate被调用!(没有StartAct,没有InitializeActivity)*
我错过了什么?
注意:初始化标志是由于此问题添加的。它在代码中唯一启动主要活动的地方设置,并且仅在主要活动的onCreate中进行检查。
[按要求] 清单文件(略有删节)。请注意,此处的服务当前未使用。
通常情况下,Application子类启动,然后启动活动(StartAct...android:name =“android.intent.action.MAIN”,android:name =“android.intent.category.LAUNCHER”)执行一些操作,然后启动InitializeActivity。这个活动也会执行一些工作,然后启动我的主显示活动(MainAct)。前两个活动都会进行一些必要的初始化,包括在启动MainAct之前设置静态“isInitialized”标志。
使用特定意图(...activity.class指定)通过startActivity()启动活动,并在startActivity()之后调用finish()。
然而,以下情况有时会发生,我不知道为什么......
简而言之,应用程序被杀死,当按下图标启动它时,它直接跳转到第三个(MainAct)活动。这导致应用程序检测到错误(isInitialized标志为false)并停止:
- 用图标正常启动应用程序: - ...Application子类启动,还启动一些工作线程 - ...StartActivity运行,然后启动InitializeActivity并完成 - ...InitializeActivity运行,然后设置isInitialized并启动MainAct并完成 - ...MainAct启动,运行正常 - ...按下Home按钮,运行Angry Birds - ...MainAct记录onPause,然后onStop。 - ...由Application子类拥有的工作线程继续定期执行操作并记录。 - 25分钟后,整个应用程序突然被杀死。这个观察是基于日志活动的结束, - 时间过去了 - 按下Home按钮 - 按下应用程序的Launcher ICON - Application子类onCreate被调用并返回 - *MainAct.onCreate被调用!(没有StartAct,没有InitializeActivity)*
我错过了什么?
注意:初始化标志是由于此问题添加的。它在代码中唯一启动主要活动的地方设置,并且仅在主要活动的onCreate中进行检查。
[按要求] 清单文件(略有删节)。请注意,此处的服务当前未使用。
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.yyy.zzz"
android:versionCode="1" android:versionName="1.0.1">
<application
android:icon="@drawable/icon_nondistr"
android:label="@string/app_name"
android:name=".app.MainApp"
android:debuggable="true">
<activity
android:label="@string/app_name"
android:name=".app.StartAct" android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="Html"
android:name=".app.HtmlDisplayAct"/>
<activity
android:label="Init"
android:configChanges="orientation"
android:name=".app.InitializeActivity" android:theme="@android:style/Theme.NoTitleBar"/>
<activity
android:label="MyPrefs"
android:name=".app.PrefsAct" />
<activity
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar"
android:name=".app.MainAct">
</activity>
<service
android:name=".app.svcs.DataGetterService" />
</application>
<uses-sdk android:minSdkVersion="4"/>
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="com.android.vending.CHECK_LICENSE" />
<uses-feature
android:name="android.hardware.location.network"
android:required="false" />
</manifest>