为什么Android有这种行为,如何解决这个问题?我只是在一个新的线程中分配了一个新的对象,这个对象使用一个视图来发布一个日志消息。
我的活动发送消息到一个新的对象:
public class WebView2ImageView extends Activity
{
private View rootView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.image_view);
this.rootView = (View) findViewById(R.id.linear1);
}
@Override
protected void onStart()
{
super.onStart();
// This work :
new Page(WebView2ImageView.this.rootView, "This message is displayed");
// This don't work :
(new Thread(new Runnable()
{
@Override
public void run()
{
// (But Work if I wait with Thread.sleep(ms)) :
new Page(WebView2ImageView.this.rootView, "This one not, why ?");
}
})).start();
}
}
对象接收者:
public class Page
{
public Page(View rootView, final String message)
{
rootView.post(new Runnable()
{
@Override
public void run()
{
Log.e("", message);
}
});
}
}
我们必须改变构造函数:
new Page(WebView2ImageView.this, "This message is displayed");
并使用runonuthread:
this.webView2ImageView.runOnUiThread (new Runnable() [...]