0

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

  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 调用引起的。在应用程序关闭时,内部似乎有一些东西试图发送该消息。 在此处输入图像描述

4

2 回答 2

1

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

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

除了活动之外,您是否改变了一些东西?

于 2014-02-16T14:00:32.847 回答
0

在查看了来自 Dialogs 插件的 Notifications.java 文件后,我发现添加以下 isFinishing() 检查已经解决了我的问题。我不确定是什么导致在我退出应用程序时执行通知,但是在我的屏幕截图中突出显示的一个简单检查否定了最后一个警报并且我的应用程序顺利关闭。从 2.9 版开始,我有几个月的时间遇到​​这个问题;希望这可以帮助处于类似情况的人。 见红色高亮框

于 2014-03-14T00:23:44.187 回答