Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以根据线程睡眠的时间来填充进度条?_Android_Multithreading_Progress Bar_Sleep_Android Progressbar - Fatal编程技术网

Android 是否可以根据线程睡眠的时间来填充进度条?

Android 是否可以根据线程睡眠的时间来填充进度条?,android,multithreading,progress-bar,sleep,android-progressbar,Android,Multithreading,Progress Bar,Sleep,Android Progressbar,我试图确定一种创建进度条的方法,该进度条将根据线程睡眠的时间逐渐填充。我已经用progressbar.setProgress尝试过了,但是我似乎无法找到一种方法来根据这个线程的睡眠时间来逐步更新进度条。目前酒吧什么也不做 我们非常感谢为找到解决方案提供的任何帮助。如果有更好的方法来执行任务,利用进度条,请让我知道 private void autoruncheck if (Autorun){ (new Thread(new Runnable() { @Override

我试图确定一种创建进度条的方法,该进度条将根据线程睡眠的时间逐渐填充。我已经用progressbar.setProgress尝试过了,但是我似乎无法找到一种方法来根据这个线程的睡眠时间来逐步更新进度条。目前酒吧什么也不做

我们非常感谢为找到解决方案提供的任何帮助。如果有更好的方法来执行任务,利用进度条,请让我知道

private void autoruncheck
  if (Autorun){
  (new Thread(new Runnable()
    {

    @Override
    public void run()
    {
        Thread.currentThread().setName("thread");

        mprogressbar = (ProgressBar) findViewById(R.Id.progressbar1);
        mprogressbar.setMax(100);
        mprogressbar.setProgress(0);
            while(Autorun)
                try
            {
                Thread.sleep(1000); 
                runOnUiThread(new Runnable() // start actions in UI thread
                {

                    @Override
                    public void run()
                    {
                       //do work
                       mprogressbar.setProgress(100);
                       UpdateUI();;
                    }
                });
            }
            catch (InterruptedException e)
            {}
    }
})).start();

}

。。。关键是。。。首先,不要触摸另一个线程中的ui元素更具体地说,当启动im时,检查是否满足自动运行条件,如果满足,则循环一个操作。每次执行操作时,都需要在UI中进行更新。诚然,我对这一点非常陌生,所以如果这不是执行回调用UI线程的循环的正确方法,请让我知道。此外,动作不应该是瞬间的,这是睡眠的原因,但我想展示一下要多久才能完成上述动作。所以我想使用一个进度条来完成这个任务。在任何情况下都不要使用Thread.sleep()。如果需要,实现您自己的忙循环,这也允许您更新UI。如果您想要的是定时启动屏幕或假进度条,您应该查看处理程序和postDelayedMessage。我将尝试查找一些处理程序/postDelayedMessage的示例,并使其工作,而不是线程。然后睡眠。我假设假进度条会起作用,我可以将它与等待任务的时间相匹配,并基本上得到期望的结果。