我有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

最佳答案

这意味着您应该忽略这些消息。 :-)

每个消息都包含一个进程ID(pid),它是括号内的值。这些消息来自pid 34。您的进程为pid 34的可能性极小。

您可以使用adb shell ps获取流程 list 。

例如,在Nexus One上,我看到:

W/AudioFlinger(14104): write blocked for 172 msecs, 901 delayed writes, thread 0xea50

pid 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.在流程启动期间,Android将列出它正在加载到流程中的所有ContentProvider。感兴趣的是__mono_init__提供程序:
I/ActivityThread(  602): Pub TouchTest.TouchTest.__mono_init__: mono.MonoRuntimeProvider

上面的消息来自您的Mono for Android进程,因此所有其他带有pid 602的消息(在这种情况下)都是来自您应用的消息;您可以自由地忽略其他PID。

09-26 21:53
查看更多