应用程序被杀后,Android强制完全重启

时间:2010-12-02 17:20:04

标签: android state restore

您好 我的申请就像这样。

首先调用StartUpActivity,它会执行很多初始化操作 然后它启动TvbTabActivity(TabActivity),其中包含其他活动作为其选项卡(例如BrowseActivity)。

我看到的问题是 - 当使用任务杀手应用程序在TvbTabActivity / Browse选项卡上终止我的应用程序,并且应用程序再次重新启动时,系统会放弃正常流程(StartUpActivity未生成),但是直接恢复最后一个可见活动(TvbTabActivity)。

如何强制Android始终首先运行StartUpActivity,以便初始化应用程序?

显然,当我的应用程序自行崩溃时,我没有这个问题,哈哈,由于异常,然后再次重新启动。

<application android:icon="@drawable/appicon"
  android:label="@string/app_name" android:name="com.xyz.QPApplication"
  android:debuggable="true">

  <activity android:name=".activity.StartUpActivity" android:configChanges="locale|orientation"
   android:label="@string/app_name" 
   android:screenOrientation="portrait">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>
  </activity>


  <activity android:name=".catalogue.BrowseActivity" android:configChanges="locale|orientation"
   android:label="@string/app_name" android:screenOrientation="portrait"
    android:launchMode="singleTop">
   <intent-filter>
    <action android:name="com.xyz.android.intent.action.BROWSE" />
    <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>

  </activity>

  <activity android:name=".activity.TvbTabActivity" android:configChanges="locale|orientation"
   android:screenOrientation="portrait" android:launchMode="singleTask">
  </activity>

3 个答案:

答案 0 :(得分:0)

你做不到。 Android会尝试从中断的地方恢复应用。处理此问题的正确方法是确保您了解Activity life-cycle并将适当的初始化放在适当的位置。

答案 1 :(得分:0)

有几种方法可以解决您的问题,最好的方法是检查Android生命周期图http://code.google.com/android/images/activity_lifecycle.png并尝试找出一种方法让应用在该环境中运行。

当然,如果你真的想要你可以通过在遇到onPause()或onStop()状态时调用Activity.finish()来杀死你自己的应用程序,但这是一个非常难看的解决方案。

答案 2 :(得分:0)

你无法对此做任何事情 - 发生在你身上的是强制停止API的用途和目的。

任务杀手正在滥用该API。

他们不能再在2.2及更高版本中使用它了。

如果确实想要避免它,您可以将应用限制为仅限2.2或更高版本。或者,如果问题是用户抱怨他们,请告诉他们停止使用任务杀手。或者,如果问题仅在于您在使用任务杀手时不喜欢这种情况,那么请不要使用任务杀手。

此操作与用户在管理应用程序的UI中按下“强制停止”时发生的行为相同。这通常很好,但因为用户必须明确地这样做,而不是这些任务杀手应用程序越来越多地做什么,他们只是在后台敲打东西而没有用户直接参与。