我有一个活动类,当点击一个按钮时,我调用一个更新一些数据的函数。以下是功能 " startDIImport"
此函数在内部使用Thread.sleep(10000)等待另一个任务完成。
因此,当此功能正在进行中时,我计划显示进度条。 " showProgress"是显示进度条的函数。
我写下面的代码来显示进度条,而我的任务在oncreate函数中运行
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
showProgress();
}
});
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
startDIImport();
}
}).start();
但是当我点击按钮时,我的进度条会挂起。能否请你帮忙解决这个问题。
我已经检查过AsyncTask,但后来才知道只有在后台任务运行几秒钟时才必须使用它。我的后台任务可能会持续几个小时。 能不能让我知道解决这个问题的最佳解决方案。
答案 0 :(得分:0)
使用此代码在ui线程上运行代码。此外,你永远不应该Thread.sleep(),而是使用适当的回调机制。显示更多代码,很难看到您正在尝试做什么。
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
showProgress();
}
});