Worklight 5.0.5 Android - 4.1
我一直在努力将本机和混合代码库合并到一个worklight应用程序中。作为其中的一部分,我已将我的启动器活动launchMode更新为“标准”,以便在恢复应用程序时,它会根据用户正在查看的上一个活动恢复到正确的webview或其他活动。 (worklight默认项目设置为'singleTask')
从eclipse直接构建到设备上时,此配置工作正常。当我为设备创建签名的APK副本并安装时,我会在恢复生命周期中获得不同的行为。以下是创建错误的步骤
奇怪的是,如果我在家里长按,并从最近使用的选择我的应用程序恢复正常。 (他们为什么会有所不同?)
我最近升级到5.0.5并且现在才注意到这个问题。也许它与新的phonegap版本有关?
使用新的Worklight项目可以轻松重新创建该问题。
修改您的Android活动
activity android:name=".SimpleWorklight"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:launchMode="standard"
更新标记,以便您可以更改其状态以证明onCreate,而不是onResume
<input type="submit" onclick="buttonClick()">
<span id=label>SimpleWorklight</span>
var counter = 1;
function buttonClick(){
。的document.getElementById( “标签”)的innerText = “点击” +计数器;
计数器=计数+ 1;
}
与此类似 https://groups.google.com/forum/?fromgroups=#!topic/android-developers/UjWcsFMe6ik
更新 - 我尝试了相同的测试,并使用5.0.2.407-developer-edition运行相同的结果 Aaron Allsbrook
答案 0 :(得分:2)
我解决了这个问题,它似乎是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活动,它将查看所有正在运行的任务。如果它发现任务正在运行,它将只关闭新活动并回退到正在运行的活动。如果它没有找到正在运行的任务,它将创建新的意图并转换。