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

it2026-02-21  12

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)

转载于:https://www.cnblogs.com/feelbest/p/3696217.html

最新回复(0)