1

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

活动:

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

当我单击活动时,程序变得无响应..有什么想法吗?

4

2 回答 2

3

你应该使用.start();

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

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

于 2013-01-31T20:23:36.210 回答
2

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

于 2013-01-31T20:24:42.623 回答