我有monodroid应用程序,在同一时间播放几个声音,有许多这样的消息在日志中。什么意思?
W/AudioFlinger( 34): write blocked for 84 msecs, 2153 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 69 msecs, 2182 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 76 msecs, 2205 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 70 msecs, 2236 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 73 msecs, 2269 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 75 msecs, 2300 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 70 msecs, 2325 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 69 msecs, 2356 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 75 msecs, 2386 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 70 msecs, 2418 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 80 msecs, 2445 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 71 msecs, 2473 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 90 msecs, 2498 delayed writes, thread 0xc658
W/AudioFlinger( 34): write blocked for 72 msecs, 2528 delayed writes, thread 0xc658发布于 2012-06-08 22:35:00
这意味着你应该忽略这些消息。:-)
每条消息都包含一个进程ID (pid),它是括号中的值。这些消息来自pid 34;您的进程不太可能是pid 34。
您可以使用adb shell ps获取进程列表。
例如,在我的Nexus One上,我看到:
W/AudioFlinger(14104): write blocked for 172 msecs, 901 delayed writes, thread 0xea50pid 14104是什么?
$ adb shell ps | grep 14104
media 14104 1 23992 1996 ffffffff 00000000 S /system/bin/mediaserver/system/bin/mediaserver当然不是一个你应该过度关注的应用程序。:-)
你如何确定你的Mono for Android进程的pid ?在进程启动期间,By looking for the process startup message.将列出它加载到进程中的所有ContentProvider。值得关注的是__mono_init__提供程序:
I/ActivityThread( 602): Pub TouchTest.TouchTest.__mono_init__: mono.MonoRuntimeProvider上面的消息来自您的Mono for Android进程,因此所有pid为602的消息(在本例中)都将是来自您的应用程序的消息;您可以自由忽略其他pid。
发布于 2012-12-12 04:58:11
它可能是,也可能不是你可以忽略的东西。输出消息的进程确实不是你的应用程序,但这并不意味着该消息不是由你的应用程序引起的。您的应用程序通过绑定器与驻留在媒体服务器进程中的AudioFlinger进行通信,这就是为什么警告消息的PID不是您的应用程序的PID的原因。然而,该消息可能是因为AudioFlinger被请求回放数据的速度快于音频数据实际被回放的速度(基于采样率、通道数量和缓冲器的大小)。如果应用程序使用AudioTrack类来写入原始数据(这是从多个线程完成的吗?)那么可能发送数据的速度比回放数据的速度要快,所以AudioFligner是“过载”的。
发布于 2012-06-08 22:55:50
在谷歌上快速搜索后,我发现AudioFlinger是一个音频软件实现,它提供了最低限度的音频功能。它实现了AudioHardwareInterface,这基本上是一个硬件抽象层,它向安卓平台隐藏了特定于驱动程序的音频实现(参见下图)。

支持Android框架的库被允许将信息记录到logcat中,就像开发人员一样。一些设备的日志数量多得离谱(例如,根据我的经验,为三星设备提供支持的库),而其他设备的日志却很少。无论哪种方式,您都不必担心这些日志,因为它们特定于Android操作系统的内部工作方式。它们不会反映出你的应用程序有任何问题。您可以忽略它们。
https://stackoverflow.com/questions/10946265
复制相似问题