我在线程中有以下代码部分
if(isPlaying){
if(applyDsp){
// Convert short lin[] to double
Log.d("MYLOG", "applyDSP is True");
if(bufferFull){
// when the code reaches here x[39] always holds the latest sample
// (if lin.length == 1)
Log.d("MYLOG", "bufferFull is True");
for(i=0;i<(lin.length - 1);i++){
x[i] = x[i+1];
}
}
这是在线程内的无限循环内。在这个无限循环结束之前,线程的 run() 函数不会结束。因此,上面的代码部分会不断被调用,直到其他地方满足其他条件为止。 applyDsp
和 bufferFull
是 boolean
变量。它们最初为 false,但一旦变为 true,它们就不会在 run() 函数内的无限循环内重置为 false。一旦 bufferFull
变为 true,消息 applyDSP is True
和 bufferFull is True
应在每次无限循环执行时交替显示。但我看到有时消息 applyDSP is True
连续出现多次,然后两者交替出现,然后 applyDSP is True
再次连续出现,然后又交替出现,依此类推。我已经多次查看代码,但找不到为什么 bufferFull
会重置回 false。所以我现在猜测消息可能没有以正确的顺序显示。
Logcat 是否在显示消息之前先缓冲消息,或者消息在 Logcat 上显示的顺序是否与创建消息的顺序完全相同?
---编辑---
使用@TCA对答案的评论中解释的方法,它只将logcat输出的一小部分写入文件,可能是在给出命令时生成的。我希望将 logcat 输出流式传输到文件,就像流式传输到 android SDK 中的 logcat 面板一样。
最佳答案
我认为它会按顺序输出日志消息,如果您有疑问追加
System.currentTimeMillis()
使用您的日志消息并检查时间。
喜欢
Log.d("MYLOG TIME IN MILLSEC:"+System.currentTimeMillis(), "bufferFull is True");
关于java - Android SDK logcat 是否按照创建自定义 Log.d() 消息的顺序显示它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570751/