我在线程中有以下代码部分
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
变量。它们最初是假的,但是一旦它们变为真,它们就不会在 run() 函数内的无限循环中重置为假。一旦bufferFull
变为真,消息applyDSP is True
和bufferFull is True
应该在每次执行无限循环时交替显示。但我看到有时消息applyDSP is True
连续多次出现,然后两个交替出现,然后applyDSP is True
又连续出现,然后又交替出现,以此类推。我已经多次查看他的代码,但找不到原因bufferFull
将被重置为假。所以我现在猜测消息可能没有以正确的顺序显示。
Logcat 是在显示消息之前先缓冲它的消息,还是在 Logcat 上看到它们的顺序与创建它们的确切顺序相同?
---编辑---
使用@TCA对答案的评论中解释的方法,它只将logcat输出的一小部分写入文件,可能是在给出命令时生成的。我希望将 logcat 输出流式传输到文件,因为它流式传输到 android SDK 中的 logcat 面板。