2013-02-19 68 views
2

工作灯5.0.5 Android平台为Android launchMode标准 - 4.1的onResume不是在工作灯项目

我一直在努力为本地和混合代码库合并成一个单一的工作灯的应用程序。作为其中的一部分,我已将启动器活动launchMode更新为“标准”,以便在应用程序恢复时恢复到正确的Web视图或基于用户正在查看的最后一次活动的其他活动。 (工作灯默认项目设置为'singleTask')

从eclipse直接构建到他的设备上时,此配置可以正常工作。当我创建一个签名的APK副本到设备并安装时,我会在恢复生命周期中获得不同的行为。下面是创建错误

  1. 开始应用
  2. 更改应用
  3. 按Home键的状态
  4. 打开应用程序文件夹
  5. 点击应用程序图标 结果的步骤 - 应用程序运行的onCreate而比onResume

奇怪的是,如果我在家里做长时间的按压,并从最近选择我的应用程序编辑它恢复正常。 (他们为什么会不同?)

我最近升级到5.0.5,并且现在才注意到这个问题。也许它与新的phonegap版本有关?

该问题很容易通过新的Worklight项目重新创建。

  1. 使用没有框架的新项目向导。
  2. 修改你的Android活动

    activity android:name=".SimpleWorklight" 
          android:label="@string/app_name" 
          android:configChanges="orientation|keyboardHidden" 
          android:launchMode="standard" 
    
  3. 更新标记,这样就可以改变其状态,证明了的onCreate,VS上的onResume

    <input type="submit" onclick="buttonClick()"> 
    <span id=label>SimpleWorklight</span> 
    
    VAR柜台= 1; function buttonClick(){ document.getElementById(“label”)。innerText =“Clicked”+ counter; counter = counter + 1; }

它相当类似这样 https://groups.google.com/forum/?fromgroups=#!topic/android-developers/UjWcsFMe6ik

更新 - 我尝试了同样的测试,并得到了与5.0.2.407开发者版 亚伦Allsbrook

+0

我现在已经尝试了这种方式,而没有使用worklight ....构建android项目与科尔多瓦1.5和科尔多瓦2.2我仍然看到失败,请单击应用程序图标时调用onResume – 2013-02-19 21:09:39

+1

这似乎是纯粹与Android和签名构建问题http://code.google.com/p/android/issues/detail?id=2373 ...现在测试替代方法 – 2013-02-20 13:06:42

回答

2

我跑了相同的结果解决了这个问题,它似乎是一个可能的错误在android中(或者只是android的行为方式)当你从应用程序图标启动时,它基本上总是在现有的一个上面开始一个新的活动,如果它已经在那里。这里提到了几种可能的解决方案。 http://code.google.com/p/android/issues/detail?id=2373

我第一次尝试加入到onCreate方法

 if (!isTaskRoot()) { 
     finish(); 
     return; 
    } 

的simpliest的方法,但是这回的NPE从cordovawebview图书馆回来。我试图在这里找到解决方案,而不是试图通过Worklight进入到科尔多瓦进行调试https://github.com/cleverua/android_startup_activity

您在哪里创建了一个启动android活动来查看所有正在运行的任务。如果它发现任务正在运行,它将简单地关闭新的活动并回退到正在运行的活动。如果它没有发现任务正在运行,它将创建新的意图和转换。

+0

您能否将问题标记为已回答? – 2013-03-18 06:14:10