Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在应用程序被终止后强制完全重启_Android_State_Restore - Fatal编程技术网

Android在应用程序被终止后强制完全重启

Android在应用程序被终止后强制完全重启,android,state,restore,Android,State,Restore,你好 我的应用程序是这样工作的 StartUpActivity被称为first,它做很多初始化工作 然后启动TvbTabActivity(TabActivity),该选项卡包含其他活动(例如浏览活动) 我看到的问题是,当使用任务杀手应用程序在TvbtActivity/Browse选项卡上终止我的应用程序,并且再次启动该应用程序时,系统会放弃正常流程(StartUpActivity未生成),而是直接恢复最后可见的活动(TvbtActivity) 我如何强制Android始终首先运行StartUpA

你好 我的应用程序是这样工作的

StartUpActivity被称为first,它做很多初始化工作 然后启动TvbTabActivity(TabActivity),该选项卡包含其他活动(例如浏览活动)

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

我如何强制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>


你不能。Android将尝试将应用程序恢复到停止的位置。正确的处理方法是确保您理解,并将适当的初始化放在适当的位置。

有几种方法可以解决您的问题,最好是查看Android生命周期图,并尝试找出一种方法使应用程序在该上下文中工作


当然,如果你真的想这样做,你可以在Activity.finish()进入onPause()或onStop()状态时调用它来终止你自己的应用程序,但这是一个非常糟糕的解决方案。

你对此无能为力——发生在你身上的事情正是force stop API所做和打算做的

任务杀手正在滥用API

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

如果你真的想避免它,你可以将你的应用限制在2.2或更高版本。或者,如果问题是用户抱怨他们,告诉他们停止使用任务杀手。或者,如果问题只是你不喜欢在使用任务杀手时发生这种情况,那么就不要使用任务杀手

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