我需要在我的应用中多次调用同一线程。使用我的原始代码,第一次执行就可以了。但是第二次崩溃-然后我得知每个线程只能执行不超过一次。
我的原始代码:
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秒的时间。根据将显示给用户的结果,他们可能希望更改其输入参数,然后再次运行仿真。这将发生几次。
本文探讨了在Android应用中如何处理线程的连续调用问题。原来的方法导致第二次调用时崩溃,因为线程只能执行一次。通过创建新的线程实例并在方法中启动解决了该问题,但作者询问这种方法是否最佳,以及从线程内部更新UI是否合适。
1178

被折叠的 条评论
为什么被折叠?



