Java 应用程序与线程崩溃
我是Java编程新手,线程中的while循环有问题。我在这里发布了一个使用while循环的示例Java 应用程序与线程崩溃,java,android,multithreading,Java,Android,Multithreading,我是Java编程新手,线程中的while循环有问题。我在这里发布了一个使用while循环的示例 public class MainActivity extends AppCompatActivity { private boolean running = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont
public class MainActivity extends AppCompatActivity {
private boolean running = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView text = (TextView)findViewById(R.id.textView);
new Thread(new Runnable() {
@Override
public void run() {
while (running) {
try{Thread.sleep(1000);}
catch(InterruptedException e){}
running = false;
text.setText("false!");
running = true;
try{Thread.sleep(1000);}
catch(InterruptedException e){}
text.setText("True!");
}
}
}).start();
}
}
当running设置为false时,线程不会运行,应用程序也不会显示任何内容。当running设置为true时,应用程序在
text.setText(“false!”)
提前谢谢大家 您无法从线程访问textView,只能从主线程更改视图对象阅读异常消息(并在问题中发布)。它应该告诉你,你不能在UI线程之外更新UI查看logcat并发布StackTrace这是最简单的使用方法。我认为Android是学习Java线程的错误平台。试试桌面应用线程睡眠你的UI,这意味着你在这段时间内无法更新UI。在后台操作@JensThe后,使用Handler或Looper或AsyncTask更新UI对象为final。它可以是accessedit不要紧,您不能从线程而不是主线程更改gui对象。@cricket_007即使TextView是最终的,我们也不能在后台或其他线程上访问它。UI必须在主线程上更新。这里我们可以使用Activity.runOnUIThread。或者一个把手,我明白。也许你可以重新写答案,而不是说“访问”来“更新”请阅读这篇文章,它完全回答了你的问题