我需要在我的应用中多次调用同一线程。使用我的原始代码,第一次执行就可以了。但是第二次崩溃-然后我知道每个线程最多只能执行一次。
我的原始代码:
View.OnClickListener myClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
mythread.start();
}
};
Thread mythread = new Thread(){
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
demoBt.setText("Running...");
}
});
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
public void run() {
demoBt.setText("Finished...");
}
});
}
};
因此,正如我所说,如果我尝试第二次运行它,它将崩溃。所以我试图像这样修改它:
View.OnClickListener myClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
test();
}
};
private void test(){
Thread mythread = new Thread(){
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
demoBt.setText("Running...");
}
});
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
public void run() {
demoBt.setText("Finished...");
}
});
}
};
mythread.start();
}
效果很好;但我的问题是,这是执行此操作的正确方法,还是有更优化的方法?
另外,从另一个线程的内部人员调用线程是否可以接受?(就像我在我的新线程中将内容放到UI线程上的方式一样)
编辑:这只是一个例子。对于我的实际代码,我需要完成大量基于数学的模拟,这需要10秒的时间。根据将显示给用户的结果,他们可能希望更改其输入参数,然后再次运行模拟。这将发生几次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句