Android Progressbar和线程优化

Android Progressbar和线程优化,android,multithreading,android-progressbar,Android,Multithreading,Android Progressbar,我在一家酒吧工作。我的项目的想法是,用户可以用一个按钮启动/恢复进度条的进度,如果需要,可以用另一个按钮(如秒表)重置进度条。 在阅读了一些关于如何使用线程处理其可视化进程的主题后,我想知道我是否以正确的方式进行了处理,以及我的代码是否可以改进。我想正确地中断或恢复线程。谢谢你的帮助 以下是我的主要活动: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我在一家酒吧工作。我的项目的想法是,用户可以用一个按钮启动/恢复进度条的进度,如果需要,可以用另一个按钮(如秒表)重置进度条。 在阅读了一些关于如何使用线程处理其可视化进程的主题后,我想知道我是否以正确的方式进行了处理,以及我的代码是否可以改进。我想正确地中断或恢复线程。谢谢你的帮助

以下是我的主要活动:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.progbar_horiz);

    pbar = (ProgressBar) findViewById(R.id.progress_bar_horiz);
    textField = (TextView) findViewById(R.id.texttime);
    startButton = (Button) findViewById(R.id.button_ring_Start);
    stopButton = (Button) findViewById(R.id.button_ring_Stop);
    Drawable draw = getResources().getDrawable(R.drawable.custom_progress_bar);
    pbar.setProgressDrawable(draw);
    maxBar = pbar.getMax();

    startButton.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            if(startButton.getText() == "Start") {
                pbar.setProgress(0);
                progress = 0;
                startButton.setText("Pause");
                myThread = new ProgressThread();
                myThread.start();
            } else {
                if (startButton.getText() == "Pause") {
                    startButton.setText("Resume");
                    myThread.interrupt();
                } else {
                    startButton.setText("Pause");
                    myThread = null;
                    myThread = new ProgressThread();
                    myThread.start();
                }
            }
        }
    });

    stopButton.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            if(myThread != null) {
                myThread.interrupt();
                pbar.setProgress(0);
                progress = 0;
                startButton.setText("Start");
            }
        }
    });
}

private class ProgressThread extends Thread {

    @Override
    public void run() {
        while (!this.isInterrupted() && progress < maxBar) {
            try { Thread.sleep(DELAY_MS);
            }
            catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }

            progress += 1;

            handler.post(new Runnable() {
                public void run() {
                    pbar.setProgress(progress);
                    if (progress == maxBar) {
                        startButton.setText("Start");
                    }
                }
            });
        }
    }
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.progbar_horiz);
pbar=(进度条)findViewById(R.id.progress\u bar\u horiz);
textField=(TextView)findViewById(R.id.texttime);
startButton=(按钮)findViewById(R.id.Button\U ring\U Start);
stopButton=(按钮)findViewById(R.id.Button\u ring\u Stop);
Drawable draw=getResources().getDrawable(R.Drawable.custom\u progress\u bar);
pbar.可设置可绘制(绘制);
maxBar=pbar.getMax();
startButton.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图v)
{
if(startButton.getText()=“开始”){
pbar.setProgress(0);
进度=0;
setText(“暂停”);
myThread=新的ProgressThread();
myThread.start();
}否则{
if(startButton.getText()=“暂停”){
startButton.setText(“恢复”);
myThread.interrupt();
}否则{
setText(“暂停”);
myThread=null;
myThread=新的ProgressThread();
myThread.start();
}
}
}
});
stopButton.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图v)
{
if(myThread!=null){
myThread.interrupt();
pbar.setProgress(0);
进度=0;
setText(“开始”);
}
}
});
}
私有类ProgressThread扩展线程{
@凌驾
公开募捐{
而(!this.isInterrupted()&&progress
}