Cordova Navigator.app.exitApp()/Navigator.device.exitApp()仅在3.0.0上发生故障

Cordova Navigator.app.exitApp()/Navigator.device.exitApp()仅在3.0.0上发生故障,cordova,cordova-3,Cordova,Cordova 3,我想知道你们中是否有人知道或知道这个问题的解决方案。基本上我在这里有这个函数: function onDeviceReady() { document.addEventListener("backbutton", function() { if (getObj("btnBack") != null){ pui.click("btnBack"); } else{ navigator.dev

我想知道你们中是否有人知道或知道这个问题的解决方案。基本上我在这里有这个函数:

  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 market的上一个版本抓取了我的应用程序,只需按“后退”按钮就可以了

编辑:

几个月后仍然有这个问题。我的活动保持不变(此处导入的另一个包我没有包含,但这是我的活动的来源:

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")
    }
}
导入android.os.Bundle;
导入org.apache.cordova.*;
公共类PuicClient扩展了Cordova活动
{
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.init();
//在config.xml中设置
super.loadUrl(Config.getStartUrl());
//super.loadUrl(“file:///android_asset/www/index.html")
}
}
编辑:

这是logcat屏幕截图;看起来这是由内部的onMessage调用引起的。在应用程序关闭时,内部似乎有什么东西试图发送该消息。

如果没有完整的代码,很难判断问题出在哪里:(

检查您是否在
getObj(“btnBack”)
内发出一些警报或呼叫


您是否更改了活动中的某些内容?

查看Dialogs插件中的Notifications.java文件后,我发现添加以下内容是Finishing()检查解决了我的问题。我不确定是什么原因导致我退出应用程序时执行通知,但我的屏幕截图中突出显示的一个简单检查否定了最后一个警报,我的应用程序顺利关闭。从2.9版开始,我数月来一直存在此问题;希望这能帮助处于类似困境的人。

我的活动基本上没有变化;我已将其包含在原始帖子中。我忘了添加,getObj不包含任何警报或调用;它只是一个运行document.getElementById()并执行一些简单检查的包装器。我还包含了我的logcat屏幕截图。如果您感兴趣,我找到了解决问题的方法。请参阅答案。