2

我在线程中有以下代码部分

    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并且bufferFullboolean变量。它们最初是假的,但是一旦它们变为真,它们就不会在 run() 函数内的无限循环中重置为假。一旦bufferFull变为真,消息applyDSP is TruebufferFull is True应该在每次执行无限循环时交替显示。但我看到有时消息applyDSP is True连续多次出现,然后两个交替出现,然后applyDSP is True又连续出现,然后又交替出现,以此类推。我已经多次查看他的代码,但找不到原因bufferFull将被重置为假。所以我现在猜测消息可能没有以正确的顺序显示。

Logcat 是在显示消息之前先缓冲它的消息,还是在 Logcat 上看到它们的顺序与创建它们的确切顺序相同?

---编辑---
使用@TCA对答案的评论中解释的方法,它只将logcat输出的一小部分写入文件,可能是在给出命令时生成的。我希望将 logcat 输出流式传输到文件,因为它流式传输到 android SDK 中的 logcat 面板。

4

1 回答 1

0

如果您有疑问,我认为它将按顺序输出日志消息

System.currentTimeMillis()

使用您的日志消息并检查时间。

喜欢

Log.d("MYLOG TIME IN MILLSEC:"+System.currentTimeMillis(), "bufferFull is True");

于 2013-09-02T10:20:23.043 回答