Navigator.app.exitApp()/ navigator.device.exitApp()仅在3.0.0上出现错误

时间:2013-08-16 22:29:37

标签: cordova cordova-3

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

  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截图;像这样的loosk是由内部的onMessage调用引起的。在应用程序关闭时,内部似乎正在尝试发送该消息。 enter image description here

2 个答案:

答案 0 :(得分:1)

如果没有完整的代码,很难说出问题所在:(

检查您是否在getObj("btnBack")内发出了一些提醒或来电。

你有没有改变你的活动?

答案 1 :(得分:0)

查看来自Dialogs插件的Notifications.java文件后,我发现添加以下isFinishing()检查已解决了我的问题。我不确定当我退出应用程序时导致通知的原因是什么,但是我的屏幕截图中突出显示的一个简单检查否定了最后一个警报,我的应用程序顺利关闭。从版本2.9开始,我有几个月的问题;希望这可以帮助一个类似绑定的人。 See red highlighted box