Android--NetWorkOnMainThreadException异常解决
来源:互联网 发布:网络诽谤罪如何取证 编辑:程序博客网 时间:2024/06/04 19:09
解释
这是由于网络工作在主线程中执行产生的异常。从Android 3.0以后,谷歌不再允许网络请求在MainThread中执行。
解决方法
1:将网络工作放在子线程中执行。
// 刷新UI,将传来的Image消息实时显示在直播页面上 private void refreshUIImage(final String msg) { ImagePath = msg; final Thread t1 = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { Imagebitmap = getBitMap(ImagePath); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });}
// 获取网络图片bitmap public static Bitmap getBitMap(String path) throws IOException { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setConnectTimeout(2000); conn.setRequestMethod("GET"); if (conn.getResponseCode() == 200) { InputStream inputStream = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); inputStream.close(); return bitmap; } else { return null; } }
2:使用异步机制,下面的代码是网上找的。
class DownImage extends AsyncTask { private ImageView imageView; public DownImage(ImageView imageView) { this.imageView = imageView; } @Override protected Bitmap doInBackground(String... params) { String url = params[0]; Bitmap bitmap = null; try { //加载一个网络图片 InputStream is = new URL(url).openStream(); bitmap = BitmapFactory.decodeStream(is); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Override protected void onPostExecute(Bitmap result) { imageView.setImageBitmap(result); } }
3:直接在主线程中进行网络操作,下面的代码是网上找的。
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build());
总结
关于网络工作的执行在子线程中,关于UI的修改在主线程中。
0 0
- Android--NetWorkOnMainThreadException异常解决
- 解决异常:android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException异常解决
- Android之android.os.NetworkOnMainThreadException异常解决
- /AndroidRuntime(1185): android.os.NetworkOnMainThreadException 异常解决
- android.os.NetworkOnMainThreadException异常如何解决
- AndroidRuntime(1185): android.os.NetworkOnMainThreadException 异常解决
- 帮你解决android.os.NetworkOnMainThreadException异常
- android.os.NetworkOnMainThreadException异常如何解决
- 解决android.os.NetworkOnMainThreadException异常问题
- 解决出现android.os.NetworkOnMainThreadException异常
- Android之如何解决android.os.NetworkOnMainThreadException的异常
- android.os.NetworkOnMainThreadException异常
- Android NetworkOnMainThreadException异常
- 异常:android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException异常
- 异常:android.os.NetworkOnMainThreadException
- 异常android.os.NetworkOnMainThreadException
- JBOSS实践二:多JBOSS部署
- 数据结构实验之查找二:平衡二叉树
- 匈牙利命名法
- spring mvc基础之文件上传(基于html5)
- ACM组队经验谈
- Android--NetWorkOnMainThreadException异常解决
- MVC工作流程
- #405 Submatrix Sum
- java 单元测试教程(junit)
- C# Object 的使用
- MVC 视图 数据交互
- 我的心得
- error while loading shared libraries: libcudart.so.##.
- Netty系列之Netty编解码框架分析