2016-02-19 105 views
0

我有兩個活動,一個Splash Activity(單擊啓動器圖標時啓動)和一個Map活動(在用戶登錄之後,它在意圖後面啓動)。當前活動(使用SingleTask launchMode)在主屏幕返回後不會恢復(改爲調用onNewIntent來啓動Activity)

有時當Map Activity打開時,我會進入主屏幕,然後嘗試恢復幾秒鐘後離開的應用程序。我注意到,當我點擊主屏幕上的啓動器圖標以恢復當前活動(地圖活動)時,我改爲重新定向到Splash活動。這違背了Android文檔中列出的行爲。

根據文檔: 「當用戶通過按下主頁按鈕離開任務時,當前活動停止並且其任務進入後臺,系統保留任務中每個活動的狀態。用戶以後通過選擇任務開始啓動器圖標恢復任務,任務涉及到的前景和在堆棧的頂部恢復活動

在地圖活動運行,我的背堆棧:

---MapActivity (front-facing activity) 
---SplashActivity 

Whe n我點擊home,我看到onStop()在MapActivity中被調用(如預期的那樣),但是當我點擊啓動器活動時,MapActivity被銷燬,onNewIntent在SplashActivity中被調用。有誰知道是什麼導致了這種行爲?

我的Android清單是:

<activity 
    android:name=".SplashActivity" 
    android:exported="true" 
    android:launchMode="singleTask"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <action android:name="com.deca.mw.SplashActivity" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
<activity 
    android:name=".activity.MapActivity" 
    android:hardwareAccelerated="true" 
    android:launchMode="singleTask" > 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 
</activity> 

,並開始MapActivity的意圖是:

Intent intent = new Intent(appContext, MapActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    appContext.startActivity(intent); 
+0

你的onDestroy()在MapActivity中被調用嗎? Android可能已經決定殺死這個應用程序,然後啓動你的Splash應用程序,因爲它是默認的。 –

回答

1

它在你的Android清單中的android:launchMode="singleTask"設置。嘗試刪除它,看看這是否解決了你所描述的問題。

+0

它似乎是由singleTask造成的。當我使用singleInstance時,問題不存在。任何想法爲什麼singleTask會導致這種行爲? – tara

+1

http://developer.android.com/guide/topics/manifest/activity-element.html聲明'singleTask'和'singleInstance'模式是'Specialized launch (不推薦一般使用)''。你真的需要設置你的應用程序的活動來啓動這種模式嗎?通過閱讀上面的鏈接,似乎在singleTask模式下,當您單擊主頁按鈕時,單個任務活動上方的所有活動將從堆棧中移除。 – pleft

+0

也是一個很好的閱讀是在這裏:http://developer.android.com/guide/components/tasks-and-back-stack.html – pleft

相關問題