运行进度条,而另一个任务正在运行android

时间:2016-04-21 17:52:16

标签: android progress-bar

我有一个活动类,当点击一个按钮时,我调用一个更新一些数据的函数。以下是功能 " 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,但后来才知道只有在后台任务运行几秒钟时才必须使用它。我的后台任务可能会持续几个小时。 能不能让我知道解决这个问题的最佳解决方案。

1 个答案:

答案 0 :(得分:0)

使用此代码在ui线程上运行代码。此外,你永远不应该Thread.sleep(),而是使用适当的回调机制。显示更多代码,很难看到您正在尝试做什么。

 Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() {
                showProgress();
            }
        });