android - 线程导致应用程序无响应

标签 android multithreading android-activity

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

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 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");
        }
    }   
}

当我点击 Activity 时,程序变得没有响应。有什么想法吗?

最佳答案

你应该使用 .start();

Thread thread = new Thread(networkStatus);
thread.start();

当您显式调用 run 方法时,它实际上并没有生成一个新线程,而是该方法调用仍在 UI 线程中运行。

关于android - 线程导致应用程序无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634408/

相关文章:

android - 应用程序子类中出现 NullPointerException?

java - 如果 Activity 是从另一个 Activity 启动的,则启动一个方法

java - 线程组调用中断后留下僵尸线程

java - 为什么 VisualVM 本身运行 50 个线程?

android - 一切都在一个 Activity 上 - Android

android - Http Get 请求返回 html?

java - Android 中显示软件键盘时如何显示背景覆盖

android - 如何使用 instagram api 发布关注/取消关注

android - Toast.show() 没有在模拟器中显示消息

java - CompletableFuture 的 obtrudeValue() 方法如何工作?