我有 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);
}
}
理想情况下,在启动第二个线程后,我在屏幕上看到“初始化”而不是“正在下载”,并且执行第二个线程中定义的操作。但有时屏幕上的信息不会改变。虽然启动了第二个线程中定义的 Action 。在第二个线程中调用了setTextMessage 方法,但UI 线程中的文本并没有改变。为什么?
最佳答案
您的代码是正确的,当您启动第二个线程时,第二个线程将启动,并且在第二个线程中您已经编写代码来启动第一个线程。
第一个线程启动得太快,您将看不到正在下载 文本,初始化 突然出现。
尝试在你的第二个线程中使用 Log.e("TAG", "Downloading");
这样你就会知道实际发生了什么。
关于java - 第二个线程没有输出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45323839/