【发布时间】:2011-11-29 15:51:31
【问题描述】:
我的程序日志显示这个的任何原因?不知何故,我的程序冻结了整个操作系统,没有按键或触摸屏输入工作。当我插入 USB 并尝试使用 DDMS 查看问题时,我通常会看到此问题,然后手机会自行重启。
11-28 18:42:43.418: I/ActivityThread(12904): Removing dead content provider: settings
11-28 18:42:43.428: E/JavaBinder(23580): !!! FAILED BINDER TRANSACTION !!!
11-28 18:42:43.438: I/ServiceManager(52): service 'backup' died
我知道我的程序是罪魁祸首,因为它是唯一一个似乎可以正常工作的应用程序,因为它会输出常规消息。我正在使用蓝牙 SPP 连接做一些非常繁重的工作,然后使用 NDK 进行实时绘图和数学计算。似乎无法访问“/data/anr/traces.txt”,因为 DDMS 不会在“/data”中列出任何内容。关于如何找出崩溃原因的任何想法?
使用的硬件/软件:可以在 Emulator 2.2 或 MyTouch 3G 上遇到相同的错误。使用最新的 NDK 版本。由于蓝牙,定位到 Android 2.2。
【问题讨论】:
-
你想用“繁重的”位做什么?将
ContentProviders 与 NDK 一起使用似乎是一个可怕的想法……您知道什么代码可能导致此问题吗? -
我正在通过 SPP 读取蓝牙数据,然后以 256/秒的采样率绘制某些数据位,然后我将数据以每秒约 9k 字节的速度写入文件,也在做对数据进行一些高斯 FIR/IIR 和 FFT 滤波器,然后通过 JNI 和 NDK 使用自定义 C 文件生成数据。然后这会触发 GUI 上的侦听器以使用新的计算值进行更新。所以是的,线程和繁重的工作......大声笑
-
也许尝试将您的 NDK 代码封装在 Java 线程中,而不是本地管理线程?也就是说,Android
Thread或ASyncTask -
NDK 调用实际上是在它们自己的 Android 线程中。
标签: android bluetooth android-ndk reboot