2017-07-31 75 views
2

我正在開發一個調用應用程序。我的HomeActivity是一項單一任務活動。我的通話活動也是一項單一任務活動。帶有兩個任務的單個Android應用程序及其導航

從HomeActivity開始呼叫。在這一刻,我的應用程序有兩個任務,因爲它們都是singleTask。在通話屏幕中,我有一個按鈕可以訪問我的HomeActivity。

當我在通話屏幕中按主頁按鈕並導航回時,我的通話活動被破壞。但它不應該被破壞。它應該保持。

當我按下通話屏幕上的主頁按鈕時,我執行以下操作。

Intent intent = new Intent(); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.setClass(this.getActivity(), MyHomeActivity.class); 
startActivity(intent); 

我的艙單申報:

<activity 
    android:name=".XXX.MyHomeActivity" 
    android:label="@string/app_name" 
    android:alwaysRetainTaskState="true" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait" 
    android:windowSoftInputMode="adjustNothing" 
    android:theme="@style/MyTheme" 
    > 
</activity> 
<activity 
    android:name=".XXX.MyCallActivity" 
    android:label="@string/app_name" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait" 
    android:theme="@style/MyTheme" 
    android:windowSoftInputMode="adjustResize"> 

從CallActivity充氣HomeActivity:

Intent intent = new Intent(); 
intent.setClass(this.getActivity(), HomeActivity.class); 
startActivity(intent); 

膨化CallActivity:

Intent intent = new Intent(); 
intent.setClass(this, CallActivity.class); 
startActivity(intent); 

誰能幫助我與導航PA用來實現這個目標的?

回答

1

爲了有2個任務,你需要確保根的任務Activity有不同的是taskAffinity,否則Android會把兩者都放在同一個任務中。默認taskAffinity是您的軟件包的名稱。

android:taskAffinity=""添加到<activity>聲明之一。

0

根據使用FLAG_ACTIVITY_CLEAR_TASK將做如下的文件:

此標誌將導致將與 活動相關的活動開始之前要清除任何現有任務。即, 該活動成爲否則爲空的任務的新根,並且任何舊活動都已完成。

所以,如果想讓你的CallActivity留在後面堆棧,你可以簡單地這樣做:

Intent intent = new Intent(); 
intent.setClass(this.getActivity(), MyHomeActivity.class); 
startActivity(intent); 
+0

Umang,我現在試過了。即使在這種情況下,我的CallActivity也被破壞了,我不明白爲什麼。我也試過「intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);」。雖然沒用。 – Ajitha

+0

會很好,如果你可以分享這兩個活動的清單聲明以及用於擴充它們的代碼 –

+0

已更新原始問題。 – Ajitha

相關問題