没有消息从第二个线程输出

时间:2017-07-26 10:08:47

标签: java android multithreading

我有2个帖子:

//Second Thread 
private class Init implements Runnable {

 public void run() {
  setTextMessage("Initialization");
  //Perform actions
 }

}
 //First Thread 
 private class Download implements Runnable {

  public void run() {
   setTextMessage("Downloading");
   //Perform actions
   Thread thread = new Thread(new Init());
   thread.start();

 }
}
  public void setTextMessage(final String textMessage) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (dialog != null) {
                setDialogMessage(textMessage);
            }
        }
    });
}

 //Add1
protected void setDialogMessage(Dialog dst, String text) {
    if (dst != null) {
        TextView progressTextDetails = (TextView) dst.findViewById(R.id.progressTextDetails);
        progressTextDetails.setText(text);
    }
}

理想情况下,在启动第二个线程后,我会看到"初始化"相反"正在下载"在屏幕上执行第二个线程中定义的操作。但有时屏幕上的消息不会改变。虽然第二个线程中定义的操作已启动。方法setTextMessage在第二个线程中调用,但UI线程中的文本不会更改。为什么呢?

1 个答案:

答案 0 :(得分:1)

您的代码是正确的,当您启动第二个线程第二个线程启动时,在第二个线程中您有编写代码来启动第一个线程

First Thread启动速度非常快,因此您将无法看到正在下载文本,并且突然显示初始化

尝试在第二个帖子中使用Log.e("TAG", "Downloading);,这样你就会知道实际发生了什么。