2012-10-29 22 views
1

我的應用程序有兩個活動,ActivityA和ActivityB。它們在以下AndroidManifest中指定:通過長按主頁按鈕啓動應用程序總是重新啓動應用程序,而不是將其放到前臺

<activity android:name=".ActivityA" android:label="@string/app_name" android:screenOrientation="landscape" 
    android:configChanges="orientation|keyboardHidden|screenSize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 
<activity android:name=".ActivityB" 
    android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden|screenSize" 
    android:windowSoftInputMode="stateAlwaysHidden"/> 

該問題的情況如下。

  1. 我啓動應用程序,並顯示ActivityA。
  2. 從ActivityA開始,我開始ActivityB並關閉ActivityA。現在任務堆棧只包含ActivityB。
  3. 我按主頁按鈕,然後手機進入主屏幕。
  4. 我長按主頁按鈕,並從歷史記錄中選取我的應用程序。
  5. 在步驟4之後,ActivityA啓動並顯示,並且任務堆棧包含頂部的ActivityA和底部的ActivityB。

我在第5步非常困惑。我期望的是,應用程序將被帶到前臺,其現有任務堆棧,即只有任務堆棧中的ActivityB。爲什麼Android會在第5步啓動ActivityA?

順便說一句,客戶端日誌包含下面的信息在步驟5:

10-26 21:29:04.070 V/HtcAppUsageStats(275):(發射應用程序,包):(MyApp的,com。示例。 myapp)

10-26 21:29:04.070 I/ActivityManager(275):Starting activity:Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x34500000 cmp = com.example.myapp/.ActivityA bnds = [0,566] [540,662](有額外)}來自pid 275

感謝您的任何建議!

+0

也許你的應用程序崩潰了,當它進入後臺時(見onPause()等),你會捕獲異常,並且每次都會重新創建嗎? – Simon

+0

我的應用沒有崩潰。我沒有在日誌中看到任何異常。 – Kai

+0

您可以檢查您的手機的開發人員選項中是否啓用了「不要保留活動」選項 –

回答

0

好了,如果你想有一個活動不顯示在長按home鍵:

  1. 啓動該活動作爲intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent);

  2. 在Android清單該活動android:excludeFromRecents="true"

您可以按照這link以及 這應該解決您的問題!

相關問題