当我们在android中停止Handler时如何停止进度条

时间:2017-04-22 05:49:15

标签: android android-progressbar

嗨,我是Android的新手,在我的应用程序中,我正在使用Progress-bar进行音频录制。

当我开始录制时,我正在更新进度条,这很好。

当我停止录制进度条时,不要停止它的连续更新。

请在停止录制时帮助我了解如何停止进度条。

private void startRecording() {
    try {
        handler = new Handler();
        recorderProgressBar = (ProgressBar) dialog.findViewById(R.id.recorder_progressBar);
        progressStatus = 0;
        // Start the lengthy operation in a background thread
        thread = new Thread() {
            @Override
            public void run() {
                while (progressStatus < 100) {
                    // Update the progress bar
                    if (handler != null) {
                        // Update the progress status
                        progressStatus += 1;
                        // Try to sleep the thread for 20 milliseconds
                        try {
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        handler.post(runnable);
                    }
                }
            }
        };
        thread.start();
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    }
}

Runnable runnable = new Runnable() {
    public void run() {
        System.out.println("it's calling ramakrishna");
        recorderProgressBar.setProgress(progressStatus);
    }
};

private void stopRecording() {

    //Kill Background thread
    if (handler != null) {
        handler.removeCallbacks(runnable);
    }
}

2 个答案:

答案 0 :(得分:0)

您可以改为停止该线程。

private void stopRecording() {
    //Kill Background thread
    if (handler != null) {
        handler.removeCallbacks(runnable);
    }

    if (thread != null) {
        thread.stop();
    }
}

或者您可以按照此处的建议使用thread.interrupt()Do not use Thread.stop()

答案 1 :(得分:0)

从方法中定义recorderProgressBar,如果它不为空则停止。