Don‘t Exit this APP. (server)‘ ~ Consumer closed input channel or an error occur

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:37   1628   0

实际场景:

实际开发当中遇到一个问题,当从一个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() 方法强杀进程就会报该错误

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP