我有一些我无法解决的问题,因为它可能是一个错误或类似的东西。我想用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:好的,它始终是第一个标签,无论它包含什么,所以第一个标签显示错误......
答案 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),现在它可以工作了。