2016-04-21 38 views
-1

我有一个activity类,当点击一个按钮时,我调用一个函数来更新一些数据。以下是函数 “startDIImport”当另一个任务正在运行时运行进度条android

此函数内部使用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

你可以显示你的'onClick'方法吗? –

+0

@RaphaelTeyssandier嗨,谢谢你的回复。点击按钮后,我打电话给另一个活动。我在新活动的onCreate函数中创建了上述线程。 – Abhinay

+0

所以你有2个活动? –

回答

0

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

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