Android 线程导致应用程序不响应

Android 线程导致应用程序不响应,android,multithreading,android-activity,Android,Multithreading,Android Activity,我有一个使用以下代码注册观察者的活动 活动: //Register for network status updates NetworkStatus networkStatus = new NetworkStatus(this); networkStatus.addObserver(new OfflineActivity()); Thread thread = new Thread(networkStatus); thread.run(); 主题: @Override public void

我有一个使用以下代码注册观察者的活动

活动:

//Register for network status updates
NetworkStatus networkStatus = new NetworkStatus(this);
networkStatus.addObserver(new OfflineActivity());
Thread thread = new Thread(networkStatus);
thread.run();
主题:

@Override
public void run() {

    for(;;) {
        Log.d("NetworkStatus", "Checking Network Status");
        if(isConnectedToInternet(context)){
            notifyObservers();
            Log.d("NetworkStatus", "Network Connection is established");
        }
        else {
            Log.d("NetworkStatus", "Not connected to network");
        }
    }   
}

当我点击该活动时,程序将失去响应。。有什么想法吗?

您应该使用
.start()


当您明确地调用run方法时,它实际上不会生成新线程,相反,方法调用仍然在UI线程中运行。

您应该使用
.start()


当您明确地调用run方法时,它实际上不会生成新线程,相反,方法调用仍然在UI线程中运行。

您的线程运行在无限for循环中。请添加中断条件,以便它可以退出。

您的线程运行处于无限for循环中。请添加中断条件,以便它可以退出。

嗯,连接到internet时生成notifyObservers()消息的无限循环?我有一个线程。sleep(),但我删除了它,因为我认为它是问题的根源。问题是thread.run()而不是thread.start()。嗯,连接到internet时生成notifyObservers()消息的无限循环?我有一个thread.sleep(),但我删除了它,因为我认为是它导致了问题。问题是thread.run()而不是thread.start()。啊,当然了,一整天都在犯这样的错误,谢谢(再次:P)!没问题:-)请记住,多线程可能会严重失败。一定要小心!啊,当然,一整天都在犯这样的错误,谢谢(再次:P)!!没问题:-)请记住,多线程可能会严重失败。一定要小心!
Thread thread = new Thread(networkStatus);
thread.start();