2013-03-18 28 views
0

我有3個活動任務A-B-C的Android活動任務在前景

<activity android:name=".LoginActivity" 
    android:label="@string/app_name" 
    android:noHistory="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN"/> 
     <category android:name="android.intent.category.LAUNCHER"/> 
    </intent-filter> 
</activity> 
<activity android:name=".DashboardActivity" 
       android:label="@string/app_name" > 
</activity> 
<activity android:name=".CreateNewPolygonActivity" 
       android:label="@string/app_name" 
       android:launchMode="singleTask" 
       android:alwaysRetainTaskState="true" 
       android:configChanges="orientation|keyboard|keyboardHidden"> 
</activity> 
<service android:name=".services.RecordCircuitService" 
      android:enabled="true" > 
</service> 

和我有一個Service使用LocationManager GPS。

我的應用程序具有這樣的邏輯:

  1. 在啓動圖標點擊 - >啓動登錄活動
  2. 登錄後 - >登錄活動是光潔度();並開始dashboardActivity
  3. 在我開始CreateNewPolygonActivity儀表盤和啓動Service與GPS
  4. 按HOME(這是重組RecordActivity到前臺)

後,我有一些錯誤的工作

  1. 開放CreateNewPolygonActivityonCreate
  2. 打開DashboardActivity

我想我的任務組織有問題。

+1

什麼問題? – codeMagic 2013-03-18 17:08:09

回答

0

通過爲您的活動設置launchMode="singleTask",您不會達到預期的效果。 Android不會爲此創建單獨的任務,因爲您尚未設置taskAffinity。無論如何,你不想通過使用launchMode="singleTask"來做到這一點,因爲這會導致比解決問題更多的問題。此啓動模式僅適用於家庭屏幕替換!

刪除launchMode="singleTask"`` from CreateNewPolygonActivity`

此外,你應該從你的登錄活動中刪除android:noHistory="true"。這也不是必需的。由於您在用戶啓動DashboardActivity時已完成登錄活動,因此當他按下BACK按鈕時,它將不會返回到登錄活動(我認爲是您想要的)。

一旦你做完了這些事情,請告訴我們什麼仍然是壞的。

+0

繼續描述的情況 1)當我按下HOME按鈕和不連接到intrnet那麼活動返回到正常 2)如果應用程序使用的活性被重建 也許是損失網絡的時間的其他應用程序(mcc mnc flags)以及新網絡何時重新連接? – Vacxe 2013-03-19 12:57:42

+0

對不起,我有很多麻煩的理解。你有沒有在logcat中查看是否有任何錯誤? – 2013-03-19 13:10:04