Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序与线程崩溃_Java_Android_Multithreading - Fatal编程技术网

Java 应用程序与线程崩溃

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

我是Java编程新手,线程中的while循环有问题。我在这里发布了一个使用while循环的示例

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。或者一个把手,我明白。也许你可以重新写答案,而不是说“访问”来“更新”请阅读这篇文章,它完全回答了你的问题