"安卓第八天笔记--网络编程二"
在安卓应用开发中,网络编程是必不可少的一部分,用于实现从服务器获取数据或与服务器进行交互。这篇笔记主要讲述了如何在Android中实现一个简单的网络图片查看器,涉及到的关键知识点如下:
1. **获取URL地址**:首先,我们需要从用户输入中获取URL地址,这通常通过`EditText`控件实现。在程序中,我们可以通过`et_path.getText().toString()`获取用户输入的文本,并进行非空判断,确保URL的有效性。
2. **创建URL对象**:使用`new URL(path)`构造URL对象,其中`path`是用户输入的URL字符串。
3. **打开网络连接**:在子线程中,利用`url.openConnection()`方法打开到指定URL的连接,返回一个`HttpURLConnection`实例,这样可以避免阻塞主线程,保证用户界面的流畅性。
4. **设置连接超时**:使用`setConnectionTimeOut(int timeout)`方法设置网络连接的超时时间,例如`conn.setConnectionTimeOut(5000)`表示设置超时时间为5秒。
5. **设置请求方法**:调用`setRequestMethod(String method)`设置HTTP请求方法,常见的有`GET`和`POST`。注意,请求方法名称需大写。
6. **获取响应码**:通过`getResponseCode()`方法获取服务器的响应码,200表示请求成功。
7. **处理响应流**:如果响应码为200,说明请求成功,可以调用`getInputStream()`获取服务器返回的数据流。
8. **解析图片**:使用`BitmapFactory.decode(InputStream in)`方法将输入流解析成`Bitmap`对象,这是将网络图片加载到内存中的关键步骤。
9. **消息传递**:为了在主线程中更新UI,我们需要使用`Handler`。创建一个`Message`对象`msg=Message.obtain()`,并设置其`what`字段作为标识符,`obj`字段存储`Bitmap`对象。然后通过`handler.sendMessage(msg)`将消息发送给主线程的`Handler`。
10. **主线程更新UI**:在主线程中定义一个`Handler`,重写`handleMessage(Message msg)`方法。根据`msg.what`的值,可以判断消息类型,进行相应的UI更新,如显示图片,或者当错误发生时,向用户显示错误信息。
11. **添加权限**:由于涉及网络访问,别忘了在AndroidManifest.xml文件中添加`<uses-permission android:name="android.permission.INTERNET" />`权限,否则应用无法进行网络操作。
12. **布局设计**:笔记中给出的布局是一个简单的垂直`LinearLayout`,包含一个用于输入URL的`EditText`和一个按钮,用于触发加载图片的操作。
以上就是Android网络编程中加载网络图片的基本流程,这个过程涵盖了URL处理、网络请求、数据解析、多线程通信以及UI更新等核心概念。理解并熟练掌握这些知识点,对于开发具有网络功能的Android应用至关重要。