Android4.0 之后不允许在主线程进行网络连接

Android4.0 以后不允许在主线程进行网络连接
Android4.0 以后不允许在主线程进行网络连接,否则会出现 android.os.NetworkOnMainThreadException。因此,必须另起一个线程进行网络连接方面的操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
  
public class ResourceDao {
  
    String returnLine = "hi";
  
    public String getAllContentByName() {
        Runnable r = new NetWorkHandler();
        Thread thread = new Thread(r);
        thread.start();
  
        try {
            Thread.sleep(15000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return returnLine;
    }
  
    private class NetWorkHandler implements Runnable {
  
        String line = "line";
        Socket socket = null;
        Scanner scanner = null;
        @Override
        public void run() {
            try {
                socket = new Socket("time-A.timefreq.bldrdoc.gov", 13);
                scanner = new Scanner(socket.getInputStream());
                while (scanner.hasNextLine()) {
                    line = scanner.nextLine();
                    returnLine += line;
                }
  
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                scanner.close();
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

由于网络连接需要一定时间,为了在主界面上进行网络信息的展现,暂时用sleep()方法简单实现,使主线程等待网络信息读取完成。
Thread.sleep(5000);

 

 



来自为知笔记(Wiz)


posted on 2014-04-28 13:58  转折点人生  阅读(205)  评论(0)    收藏  举报