android.os.NetworkOnMainThreadException
来源:互联网 发布:光子脱毛 知乎 编辑:程序博客网 时间:2024/05/21 06:31
<strong>NetworkOnMainThreadException</strong>: The exception that is thrown when an application attempts to perform a networking operation on its main thread.
You should call sendfeedback method on asynctask then only
above
code
will work. As webserver is taking lot of time to response main thread <br>becomes unresponsive. To
avoid
it you should call it on another thread. Hence asynctask is better.
当在主线程中执行网络操作时,NetworkOnMainThreadException会抛出这个异常;
你应该调用“asynctask”的“sendfeedback”方法来执行网络操作;当Web服务器花费很多时间响应主线程而变成迟钝,为了避免这种情况,使用“asynctask”更好
package com.example.lj.imagedemo;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.widget.ImageView;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { imageView = (ImageView) findViewById(R.id.imageView);/* new Thread(new Runnable() { @Override public void run() { //图片资源 String url = "http://s16.sinaimg.cn/orignal/89429f6dhb99b4903ebcf&690"; //得到可用的图片 Bitmap bitmap = getHttpBitmap(url); if (bitmap == null) { Log.i(TAG, "bitmap is null"); } //显示 imageView.setImageBitmap(bitmap); } }).start();*/ new DownloadUrlBitmap().execute("http://192.168.118.120:8888/img/dn1.jpg"); } catch (Exception e) { e.printStackTrace(); } } private class DownloadUrlBitmap extends AsyncTask<String, Void, Bitmap> { @Override protected Bitmap doInBackground(String... params) { return loadImageFromNetwork(params[0]); } @Override protected void onPostExecute(Bitmap bitmap) { imageView.setImageBitmap(bitmap); } } private Bitmap loadImageFromNetwork(String url) { //得到可用的图片 Bitmap bitmap = simpleNetworkImage(url); if (bitmap == null) { Log.i(TAG, "bitmap is null"); } return bitmap; } public Bitmap simpleNetworkImage(String url) { Bitmap pngBM = null; try { URL picUrl = new URL(url); pngBM = BitmapFactory.decodeStream(picUrl.openStream()); } catch (IOException e) { e.printStackTrace(); } return pngBM; } /** * 获取网落图片资源 * * @param url * @return */ public Bitmap getHttpBitmap(String url) { URL myFileURL; Bitmap bitmap = null; try { myFileURL = new URL(url); //获得连接 HttpURLConnection conn = (HttpURLConnection) myFileURL.openConnection(); //设置超时时间为6000毫秒,conn.setConnectionTiem(0);表示没有时间限制 conn.setConnectTimeout(6000); //连接设置获得数据流 conn.setDoInput(true); //不使用缓存 conn.setUseCaches(false); //这句可有可无,没有影响 //conn.connect(); //得到数据流 InputStream is = conn.getInputStream(); //解析得到图片 bitmap = BitmapFactory.decodeStream(is); //关闭数据流 is.close(); } catch (Exception e) { e.printStackTrace(); } return bitmap; }}
阅读全文
0 0
- android.os.NetworkOnMainThreadException问题
- android.os.NetworkOnMainThreadException问题
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException异常
- 关于android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- 异常:android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException异常
- android.os.NetworkOnMainThreadException
- exception: android.os.NetworkOnMainThreadException
- 异常:android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- 异常android.os.NetworkOnMainThreadException
- js实现年月日 当前时间的显示
- 网络管理常用命令
- 数据库知识
- 替代FE1.1S,MA8601,性价比高,中文方案,奇岩一级代理,HUB方案
- Android Studio 过滤不需要的Log
- android.os.NetworkOnMainThreadException
- (17)用户注册信息校验:正则表达式
- OpenGL扩展库使用手册《GLEW—The OpenGL Extension Wrangler Library》
- Object不能直接转成int
- ios-strong和weak和自动释放池的补充
- HTTP Request GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE Methods
- Function HDU-6038
- Ansible初识
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。