Android杀了我的应用

时间:2013-11-21 04:49:58

标签: android

我正在使用测试应用程序在Android手机(Galaxy SIII,android 4.1.2)和使用MicroBridge(通过adb)的arduino之间进行通信。安卓应用程序使用带有Java端的ndk完成所有工作,只是为了启动并显示一些数据。

30s-60s的工作正常,但随后我的应用程序突然关闭,我无法弄清楚原因。看看logcat输出,它不是崩溃;事情正在以正常的方式结束。 Android似乎只是告诉我的应用程序关闭。我唯一能找到的就是这个logcat行序列总是在我的应用程序关闭之前。

D/MTPRx   (29019): DRIVER_TIME_OUT 60s lapsed
D/MTPRx   (29019): still no open session command from host, so toast
E/MTPRx   (29019): started activity for popup

我不确定为什么这是相关的,但我认为某处有联系。正如第一行所暗示的,如果我等到启动我的应用程序直到插入USB电缆几分钟后,它似乎工作正常。

有谁知道这里发生了什么,更重要的是,如何防止我的应用关闭?

更新: 来自进一步测试的更多信息:

  1. 将arduino限制为仅轮询adb界面并不能解决问题。
  2. 如果我注释掉arduino基本上有一个空白的草图(即没有尝试通信),问题就会消失。
  3. 连接到PC(adb服务器已经运行)而不是arduino显示同样的问题。
  4. 在连接到PC的Galaxy S4(android 4.3)上发生同样的问题

2 个答案:

答案 0 :(得分:1)

检查libc是否会抛出任何异常,这可能是您关闭应用程序的NDK代码崩溃

答案 1 :(得分:0)

我最近遇到了这个问题并且认为我会分享我找到的内容,因为这是在Google中搜索此问题时唯一出现的地方。

我的设置是:安装了Android 4.1.2的三星Galaxy Camera连接到IOIO板。我的问题是在将设备连接到IOIO板后60秒,我的前台活动暂停,然后立即恢复。 Adb日志包含与原始问题相同的MTPRx行。这对我来说是个问题,因为我的活动是录制视频而我在onPause处理程序中停止了录制。

事实证明,MRPRx是一个处理MTP协议的守护进程。显然,IOIO板没有尝试与MTP通话,这会使守护进程失效。这反过来导致当前前景活动暂停。

我还没有找到防止这种情况发生的方法,但是因为在Android的现代版本中,活动的暂停状态不可用,我决定通过将所有内容从onPause处理程序移动到onStop来解决它。这对我来说很好,但可能并不适用于所有情况。

这些发现并不完全解释TS描述的所有症状,因此可能还有其他事情发生。

相关问题