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
}