请教个安卓多线程改变while 循环 值问题

这是前端页面

        <Button android:id="@+id/done"

android:onClick="starVoce"

android:layout_marginRight="10dp"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:layout_gravity="center_vertical"

android:text="开始录音" />

<Button

android:onClick="endVoce"

android:id="@+id/revert"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:layout_gravity="center_vertical"

android:text="结束录音" />

开始录音是没有问题的
我通过一个VoiceContentActivity类

    public void endVoce(View view) {

audioRecord = new AudioRecordActivity();

audioRecord.stopRecord();

Toast.makeText(this, "停止录制", Toast.LENGTH_SHORT).show();

}

我想通过stopRecord 方法改变 isRecording 的值
AudioRecordActivity 类

public class AudioRecordActivity implements Runnable{

private boolean isRecording = false; //true表示正在录音

//停止录音

public void stopRecord() {

isRecording = false;

Log.e("", "startRecord:停止录音"+isRecording );

}

public void run() {

try {

//获取到文件的数据流

mDataOutputStream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(mRecordingFile)));

byte[] buffer = new byte[mBufferSizeInBytes];

//判断AudioRecord未初始化,停止录音的时候释放了,状态就为STATE_UNINITIALIZED

if(mAudioRecord.getState() == mAudioRecord.STATE_UNINITIALIZED){

initDatas();

}

mAudioRecord.startRecording();//开始录音

//getRecordingState获取当前AudioReroding是否正在采集数据的状态

while (isRecording && mAudioRecord.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) {

int bufferReadResult = mAudioRecord.read(buffer,0,mBufferSizeInBytes);

for (int i = 0; i < bufferReadResult; i++)

{

//Log.e("", buffer[i]+"--"+isRecording );

// mDataOutputStream.write(buffer[i]);

}

Log.e("", ""+isRecording );

//stopRecord();

}

mDataOutputStream.close();

} catch (Throwable t) {

Log.e("lu", "Recording Failed");

stopRecord();

}

}

}

为什么 stopRecord() 里面的值isRecording 改变了, run() 里面的循环while (isRecording && 还是在不停输出,他为什么没变动? 这样搞得录音一直停止不了..


回答:

private boolean volatile isRecording = false;

以上是 请教个安卓多线程改变while 循环 值问题 的全部内容, 来源链接: utcz.com/p/944127.html

回到顶部