为什么我会收到错误'频道无法恢复,将被处理!'

unc*_*Lem 92 android andengine

当我尝试启动我的AndEngine活动时,我收到此错误:

ERROR/InputDispatcher(21374): channel '4122e148 my.package.AcGame (server)' ~ Channel is unrecoverably broken and will be disposed!
Run Code Online (Sandbox Code Playgroud)

该应用程序不会崩溃,但有一个黑屏,设备不会按下"后退"或"主页"按钮.

有谁知道问题是什么?

Lou*_*rda 37

我看到该错误的最常见原因之一是当我尝试在不在前台的活动中显示警告对话框或进度对话框时.就像在显示对话框的后台线程在暂停的活动中运行时一样.

  • 那不是我的情况,但是谢谢,我会记住的。 (2认同)
  • 在onPause中将对话框设置为null,并在后台线程中显示对话框之前检查null. (2认同)

Rom*_*ack 13

我认为你在某处有内存泄漏.您可以在此处找到避免泄漏内存的提示.您还可以在此处了解有关跟踪它的工具.


小智 7

你使用过另一个UI线程吗?您不应该使用超过1个UI线程并使其看起来像三明治.这样做会导致内存泄漏.

我2天前解决了类似的问题......

为了简短起见:主线程可以有许多UI线程来做多个工作,但是如果一个包含UI线程的子线程在其中,那么UI线程可能尚未完成其工作,而它的父线程已经完成了它工作,这会导致内存泄漏.

例如......对于Fragment和UI应用程序......这将导致内存泄漏.

getActivity().runOnUiThread(new Runnable(){

   public void run() {//No.1

  ShowDataScreen();

getActivity().runOnUiThread(new Runnable(){

    public void run() {//No.2

Toast.makeText(getActivity(), "This is error way",Toast.LENGTH_SHORT).show();

    }});// end of No.2 UI new thread

}});// end of No.1 UI new thread
Run Code Online (Sandbox Code Playgroud)

我的解决方案重新排列如下:

getActivity().runOnUiThread(new Runnable(){

   public void run() {//No.1

ShowDataScreen();

}});// end of No.1 UI new thread        

getActivity().runOnUiThread(new Runnable(){

   public void run() {//No.2

Toast.makeText(getActivity(), "This is correct way",Toast.LENGTH_SHORT).show();

}});// end of No.2 UI new thread
Run Code Online (Sandbox Code Playgroud)

供你参考.

我是台湾人,我很高兴再次回答这里.


cod*_*zjx 6

您可以在此处查看有关此输出的源代码:

void InputDispatcher::onDispatchCycleBrokenLocked(
        nsecs_t currentTime, const sp<Connection>& connection) {
    ALOGE("channel '%s' ~ Channel is unrecoverably broken and will be disposed!",
            connection->getInputChannelName());
    CommandEntry* commandEntry = postCommandLocked(
            & InputDispatcher::doNotifyInputChannelBrokenLockedInterruptible);
    commandEntry->connection = connection;
}
Run Code Online (Sandbox Code Playgroud)

它是由循环破坏锁定引起的...

  • 你能详细说明,循环破坏是什么意思? (11认同)

ish*_*no1 5

在我重命名某些内容strings.xml并忘记修改其他文件(首选项 xml 资源文件和 java 代码)后,我遇到了类似的错误(我的应用程序崩溃)。

IDE (android studio) 没有显示任何错误。但是,在我修复了我的 xml 文件和 java 代码后,应用程序运行正常。因此,也许您的 xml 文件或常量中存在一些小错误。


Kap*_*gia 5

我有同样的问题。解决该错误的方法:在模拟器上关闭它,然后使用Android Studio运行它。

当应用程序已在模拟器上运行时,当您尝试重新运行应用程序时,会发生此错误。

基本上,错误显示 - “我不再拥有现有通道并正在处理已建立的连接”,因为您再次从 Android Studio 运行应用程序。