Android访问网络异常退出的情况处理:
情况说明:我们在进行安卓开发时,经常需要用到访问网络,从网络中获取相应的数据的情况,但新版本安卓在直接访问网络时会报错。原因是在新版本中加入了线程安全模式。
有两种方式实现网络访问
第一种方法:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_app); if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } }
第二种方法:
另外需要单独定义@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_app); new Thread(runnable).start();//取得网络版本 }
Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle data = msg.getData(); String netversion_data = data.getString("ver"); String[] ary = netversion_data.split("@"); net_version = ary[0]; net_app_url = ary[1]; ShowUpdate(); } }; Runnable runnable = new Runnable() { @Override public void run() { // TODO: http request. Message msg = new Message(); Bundle bundle=new Bundle(); getLocalVersion();//取得本地版本 //以下是取得网络版本 String url = "http://www.xxx.com/getappversion"; String ver = MyConstant.HttpGetData(url); bundle.putString("ver",ver); msg.setData(bundle); handler.sendMessage(msg); } };