2013-03-18 75 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