Mes*_*one 5 android restart android-activity
我有一个Android应用程序,有许多活动.有时会开始错误的活动.
通常,一个Application子类启动,然后启动活动(StartAct ... android:name ="android.intent.action.MAIN",android:name ="android.intent.category.LAUNCHER")做一些工作,然后启动InitializeActivity.这有些工作,然后触发我的主显示活动(MainAct).前两个活动进行一些必要的初始化,包括在为MainAct启动intent之前设置静态" isInitialized "标志.
使用特定意图(指定了... activity.class)使用startActivity()启动活动,并在startActivity()之后调用finish().
然而,这是有时会发生的事情,我不知道为什么......
简而言之,应用程序被终止,当按下图标启动它时,它会直接跳转到第三个(MainAct)活动.这会导致应用程序检测到错误(isInitialized标志为false)并停止:
我错过了什么?
注意:由于此问题,添加了initialize标志.它设置在启动主活动的代码中的唯一位置,并且仅在主活动中的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>
Run Code Online (Sandbox Code Playgroud)
应用程序因内存不足而被终止的事实对用户来说应该是透明的。这就是为什么当应用程序被终止时,Android 会记住该应用程序中最后运行的 Activity 是什么,并在用户返回应用程序时直接创建该 Activity。
\n\nonCreate()也许你可以用你的Application(或你的)方法做一些事情MainAct)方法中执行某些操作,以确保一切都正确初始化。
顺便说一句,除非您确实需要,否则当用户不使用您的应用程序时,您不应该让工作线程执行某些工作。根据您的操作,这可能会快速耗尽电池电量,或者让用户认为它会快速耗尽电池电量(这更糟糕,因为用户会卸载您的应用程序!)
\n\n您还可以让应用程序在用户退出应用程序时完成每个活动,
\n| 归档时间: |
|
| 查看次数: |
2310 次 |
| 最近记录: |