加载活动后,它有时会起作用,有时不起作用,为什么?

时间:2012-06-02 17:35:31

标签: android progress-bar loading

我有一些我无法解决的问题,因为它可能是一个错误或类似的东西。我想用androidplot制作一个图表,它工作得很好,但当然需要一些时间来绘制它(使用数百个数据),所以我使用进度对话框来指示加载。但是发生的事情真的很奇怪。 我可以在加载活动和加载活动时定义活动的外观。在加载时我在后台定义了一个textview,将其文本设置为“loading”,如果加载,则textview包含大量数据,文本等。

onCreate
{



        Thread thread = new Thread(new Runnable() {  
               public void run() {

-------what needs to be appeared after its loaded ----
Textview -> 12,3245,456,78,789

}

----what is on the screen while the progressbar is on---
TextView -> loading..
}

但是大部分时间在进度对话框消失之后,没有任何反应,textview仍然说“加载”,很少加载数据并使数据出现并更改textview。我注意到我想要出现的数据越多,它在加载阶段就越少。当然每次加载progessbar上诉然后消失。 有什么建议吗?这真的很奇怪,因为我在tablayout中使用它而其他选项卡从不这样做,总是让数据出现。

提前致谢!

UP:好的,它始终是第一个标签,无论它包含什么,所以第一个标签显示错误......

2 个答案:

答案 0 :(得分:1)

The Andoid UI toolkit is not thread-safe. So, you must not manipulate your UI 
from a worker thread—you must do all manipulation to your user interface from
the UI thread. Thus, there are simply two rules to Android's single thread model:

1. Do not block the UI thread
2. Do not access the Android UI toolkit from outside the UI thread 

阅读this,了解有关如何从外部访问UI元素的更多信息 编辑::

使用AsyncTask ::

onCreate
{

     new myLoading().execute();    
}

class myLoading extends AsyncTask<Void, Void, Void>
{
     protected Void doInBackground(Void ... ) {
      .......... do all the loading here .........
     }
     protected void onPostExecute(Void ) {
        Textview -> 12,3245,456,78,789
     }
}

答案 1 :(得分:0)

我想出了一些解决方法。我对解决方案没有任何线索,我唯一的猜测是加载屏幕以某种方式超过了所有数据的到来,因此无法绘制图表。管他呢... 我放了一个thread.sleep(1000),现在它可以工作了。