读书人

android.view.ViewRootImpl$CalledFro

发布时间: 2013-10-22 16:17:03 作者: rapoo

android.view.ViewRootImpl$CalledFromWrongThreadException异常处理

一般情况下,我们在编写android代码的时候,我们会将一些耗时的操作,比如网络访问、磁盘访问放到一个子线程中来执行。而这类操作往往伴随着UI的更新操作。比如说,访问网络加载一张图片

new Thread() {@Overridepublic void run() {try {URL url = new URL(path);HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 设置请求方式connection.setRequestMethod("GET");// 设置超时时间connection.setConnectTimeout(10000);// connection.setRequestProperty(field, newValue)int code = connection.getResponseCode();if (code == 200) {InputStream is = connection.getInputStream();final Bitmap bitmap = BitmapFactory.decodeStream(is);// // 告诉主线程一个消息,帮我更新ui,内容:bitmap// Message msg = new Message();// // 消息的代号,是一个int类型// msg.what = UPDATE_UI;// // 要传递的消息对象// msg.obj = bitmap;// // 利用handler发送消息// handler.sendMessage(msg);runOnUiThread(new Runnable() {@Overridepublic void run() {iv_beauty.setImageBitmap(bitmap);}});} else {// Message msg = new Message();// msg.what = ERROR;// handler.sendMessage(msg);runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), "图片获取失败!", 0).show();}});}} catch (Exception e) {e.printStackTrace();// Message msg = new Message();// msg.what = ERROR;// handler.sendMessage(msg);runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), "图片获取失败!", 0).show();}});}}}.start();

同样能够正常运行

读书人网 >Android

热点推荐