线程导致应用程序无响应

时间:2013-01-31 20:21:20

标签: android multithreading android-activity

我有一个使用以下代码注册Observer的活动

的活动:

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

当我点击活动时,程序变得没有反应..任何想法?

2 个答案:

答案 0 :(得分:3)

您应该使用.start();

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

当您显式调用run方法时,它实际上不会生成新的Thread,而是方法调用仍然在UI Thread中运行。

答案 1 :(得分:2)

你的线程运行是无限循环。请添加休息条件,以便它可以退出。