Android 中从4.0以后无法在主线程访问网络的解决办法。
2013-11-27 14:44
387 查看
1,第一种:在主程序中增加一下语句 @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //可以在主线程访问网络 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build()); //访问webservice或者其他语句 } 2,第二种方法:是启动线程访问: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 启动线程 new Thread(getdb).start(); } /** * 线程访问 */ Runnable getdb= new Runnable() { @Override public void run() { Looper.prepare(); //访问webservice或者其他语句 此处是获取网络数据的地方如:weiservice数据 // 必须使用post方法更新UI组件 //resultView是我页面的一个TextView 更新显示内容如下: resultView.post(new Runnable() { @Override public void run() { resultView.setText(result); } }); Looper.loop(); } }; 第三种:和第二种类似用系统提供的AsyncTask @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 异步执行调用WebService的任务 new myAsyncTask().execute(); } class myAsyncTask extends AsyncTask { @Override protected Object doInBackground(Object... params) { //访问webservice或者其他语句 此处是获取网络数据的地方如:weiservice数据 //更新控件显示的内容 resultView.post(new Runnable() { @Override public void run() { //result假定是返回值 resultView.setText(result); } }); return null; } }
相关文章推荐
- Android4.0以后不能在主线程访问网络的解决
- Android4.0以后不能在主线程访问网络的解决
- Android主线程不能访问网络异常解决办法
- Android主线程不能访问网络异常解决办法
- Android 4.x 在 https 协议下无法利用 okhttp 进行网络访问的临时解决办法
- Android 4.0以后不能在主线程能进行网络访问
- Android主线程不能访问网络异常解决办法
- “android.os.NetworkOnMainThreadException”---关于Android4.0后无法将访问网络放入主线程中的解决办法
- Android主线程不能访问网络异常解决办法
- Android 4.0以后主线程访问网络问题
- Android主线程不能访问网络异常解决办法 NetworkOnMainThreadException错误
- 笔记本无法访问特定无线网络的解决办法
- "计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系"的解决办法
- zz: virsual studio等AP无法访问网络映射驱动器(netmap drive)的解决办法
- 无法访问您试图使用的功能所在的网络位置 无法找到vcredist.msi的解决办法
- 关于samba无法访问,你可能没有权限使用网络的解决办法
- 访问局域网某台电脑时提示:无法访问,你可能没有权限使用网络资源.的解决办法
- android 访问网络不能在主线程中进行以及在线程中操作UI的解决方法
- android官网无法访问解决办法(亲测可用)
- http://dl-ssl.google.com/android/eclipse/ 无法访问的解决办法