当前位置: 首页 > 工具软件 > Copy Events > 使用案例 >

Don‘t Exit this APP. (server)‘ ~ Consumer closed input channel or an error occurred. events=0x9

敖毅
2023-12-01

实际场景:

实际开发当中遇到一个问题,当从一个app 点击systemUI 返回到 launcher 时,出现了卡顿、黑屏等问题,几秒十几秒后恢复正常。

从日志上看都是正常的,但是报出了如下错误:

InputDispatcher: channel 'fbefe69 Copy Log, Don't Exit this APP. (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
InputDispatcher: channel '141f8ce com.wt.emode/com.wt.emode.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

消费者关闭了输入通道或者发生了错误

通道是被不可恢复地破坏了,将被放弃。

 

这里看到更像是异常退出了app,但是依旧想往该通道里分发数据。

分析:

这是一个必现问题,当点击exit 按钮去退出 app,再进入app 时,必报以上错误。

这里找到了该app 退出的逻辑代码,发现是在onStop() 的生命周期调用了 System.exit() 方法(因为该app不希望在后台运行)。所以推断是当时因为退出了该app界面,Activity生命周期走到了onStop(),所以执行了退出方法,但是资源并没有被完全释放,这时很短的时间间隔内,有进程在向该通道分发数据,导致系统出现卡顿、黑屏现象。

 

解决:

在ondestroy() 生命周期执行  System.exit() 方法时,再用 Handler 做了一个 3s 的延时,相当于给系统充分时间去释放资源。

 

结果:

问题不在复现

 

===============================================================================================

12/28 补充:leader 解释了一下,该错误在调用 exit() 方法强杀进程就会报该错误

 类似资料: