我正在使用测试应用程序在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电缆几分钟后,它似乎工作正常。
有谁知道这里发生了什么,更重要的是,如何防止我的应用关闭?
更新: 来自进一步测试的更多信息:
答案 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描述的所有症状,因此可能还有其他事情发生。