我想知道你们中是否有人知道或知道这个问题的解决方案。基本上我在这里有这个功能:
function onDeviceReady() {
document.addEventListener("backbutton", function() {
if (getObj("btnBack") != null){
pui.click("btnBack");
}
else{
navigator.device.exitApp();
}
}, false);
}
pui.click() 只是我定义的东西。因此,只要按下我的 android 设备上的后退按钮,就会调用此函数;在 2.9 和以下所有版本上,如果这到达应用程序上不存在 btnBack obj 的点,它会调用 navigator.device.exitApp() (或 navigator.app.exitApp() 我在两者之间切换,看看是否会解决我的问题)并且应用程序关闭得很好。现在有了 3.0.0,我在 Eclipse 中得到以下致命异常:
08-16 15:23:27.015: E/AndroidRuntime(22715): android.view.WindowManager$BadTokenException: 无法添加窗口——令牌 android.os.BinderProxy@422635a8 无效;您的活动正在运行吗?
有人知道这里发生了什么吗?我从 android 市场获取了我的应用程序的早期版本,它与后退按钮一起工作得很好。
编辑:
几个月后仍然有这个问题。我的活动没有改变(这里导入了另一个我没有包含的包,但这是我的活动的来源:
import android.os.Bundle;
import org.apache.cordova.*;
public class PUIClient extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.init();
// Set by <content src="index.html" /> in config.xml
super.loadUrl(Config.getStartUrl());
//super.loadUrl("file:///android_asset/www/index.html")
}
}
编辑:
这是logcat截图;看起来这是由内部的 onMessage 调用引起的。在应用程序关闭时,内部似乎有一些东西试图发送该消息。