ibm-mobilefirst - onResume 不适用于 Worklight 项目中的 android launchMode 标准

标签 ibm-mobilefirst

工作灯 5.0.5 安卓 - 4.1

我一直致力于将 native 和混合代码库合并到单个工作灯应用程序中。作为其中的一部分,我已将启动器事件 launchMode 更新为“标准”,以便当应用程序恢复时,它会恢复到正确的 Web View 或基于用户查看的上次事件的另一个事件。 (worklight 默认项目设置为“singleTask”)

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

  1. 启动应用
  2. 更改应用的状态
  3. 按主页按钮
  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 与 onResume

    <input type="submit" onclick="buttonClick()">
    <span id=label>SimpleWorklight</span>
    
    变量计数器=1; 函数按钮点击(){ document.getElementById("label").innerText="Clicked"+counter; 计数器=计数器+1; }

与此相当相似 https://groups.google.com/forum/?fromgroups=#!topic/android-developers/UjWcsFMe6ik

更新 - 我尝试了相同的测试并在 5.0.2.407-developer-edition 上运行时得到了相同的结果 亚伦·奥尔斯布鲁克

最佳答案

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

我首先尝试了添加到 onCreate 方法的最简单方法

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

但这从 cordovawebview 库返回了 NPE。我没有尝试通过 Worklight 调试并进入 Cordova,而是尝试了此处找到的解决方案 https://github.com/cleverua/android_startup_activity

您可以在其中创建一个启动 Android 事件,该事件将查看所有正在运行的任务。如果它发现任务正在运行,它将简单地关闭新事件并回退到正在运行的事件。如果它没有发现任务正在运行,它将创建新的意图并进行转换。

关于ibm-mobilefirst - onResume 不适用于 Worklight 项目中的 android launchMode 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14960355/

相关文章:

deployment - 我们如何在 IBM Bluemix 平台中部署 Worklight 服务器?

ios - IBM Worklight app-builder ant 任务创建两个 xcode 项目而不是一个

ibm-mobilefirst - 使用 WL.Client.connect 和移动 Web 环境创建了简单的应用程序,在预览和实际设备上运行时看到 "Access Denied"

android - Worklight - Google Play 应用程序中的 Apache Cordova 漏洞

AngularJS 路由无法在 Windows Phone 8 上运行(使用 Worklight)

tomcat - MobileFirst 7.0 Server 中的运行时同步失败

oauth - 如何在 IBM Worklight 6.0 中实现 OAUTH 2.0

javascript - 黑莓 7 上解析错误谷歌地图 javascript v3

ibm-mobilefirst - 在 Worklight 适配器之间共享代码

javascript - Worklight 或 jQuery Mobile 意外抛出 “pagechange” 事件