2010-12-02 66 views
3

你好 我的應用程序是這樣工作的。Android在應用程序被殺後強制完全重新啓動

StartUpActivity首先被調用,它會執行很多初始化的東西 然後它啓動TvbTabActivity(TabActivity),該TvbTabActivity(TabActivity)具有其他Activities作爲其選項卡(例如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> 

回答

0

你不能。 Android會嘗試恢復停止的應用程序。處理這個問題的正確方法是確保您瞭解Activity life-cycle並將適當的初始化放在適當的位置。

0

有幾種方法可以解決您的問題,最好的方法是查看Android生命週期圖http://code.google.com/android/images/activity_lifecycle.png,並嘗試找出在該環境下使應用程序正常工作的方法。

當然,如果你真的想要通過調用Activity.finish(),當它打到onPause()或onStop()狀態時殺死自己的應用程序,但這是一個相當不好的解決方案。

0

你無法做任何事情 - 發生在你身上的是停止API所做的和打算做的事情。

任務殺手正在濫用該API。

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

如果你真的避免它,你可以在你的應用程序限制爲僅2.2或更高版本。或者如果問題是用戶在抱怨他們,告訴他們停止使用任務殺手。或者,如果問題只是在使用任務殺手時不喜歡這種情況,則不要使用任務殺手。

此外,這與用戶在管理應用程序的UI中按下「強制停止」時發生的行爲相同。這通常是很好的,因爲用戶必須明確地這樣做,而不是這些任務殺手應用程序越來越多地在沒有用戶直接參與的情況下在背景中敲擊東西的地方。

相關問題