在我收到来自互联网的东西的帖子中,我想通知用户,我做了类似
的事情new Thread(new Runnable(...
...
Log.d("tag", "going to redraw");
findViewById(R.id.view).setVisibility(View.VISIBLE);
findViewById(R.id.view).refreshDrawableState(); // tried this
findViewById(R.id.view).invalidate(); // and this together and separately
).start();
我始终查看日志,有时查看显示的视图。我不知道发生了什么
我试图在findViewById
中加入runOnUIThread
,但也没有完成这项工作。对此有何提示?
答案 0 :(得分:2)
不要修改UI线程以外的线程中的UI!使用Handler或Activity.runOnUiThread()
答案 1 :(得分:0)
当您不在主Thread
时,您需要使用postInvalidate()
上的View
代替invalidate()
导致在事件循环的后续循环中发生无效。使用此选项可以从非UI线程中使视图无效。
From the docs for invalidate()
必须从UI线程调用它。