android开发之http请求
来源:互联网 发布:调查人力资源矩阵图 编辑:程序博客网 时间:2024/04/29 13:45
接触android的开发半年多了,针对一些问题或者是经验做一些总结记录,以供以后翻阅学习。
android程序开始运行的时候,会单独启动一个process,在默认的情况下,所有的这个程序中的activity和service(activity和service只是android提供的components中的两种,除此之外还有content provide 和broadcast recevier)都会泡在这个process。
一个android的程序默认情况下也只有一个process,但是一个process可以有许多个thread。UI Thread在android程序运行的时候就被创建,是一个Process当中的主线程Main Thread,主要负责控制UI界面的显示、更新和控件的交互。
首先注意两点:
1、android的主线程中不能直接访问网络,UI线程也就是主线程中不能有比较费时的操作,如访问网络,下载数据,查询数据库等,以免阻塞主线程。
2、android的子线程不成直接操作UI,子线程更新ui的是不安全的,多个子线程同时操作一个控件可能发生麻烦,所以android中禁止子线程去更新UI操作,只有主线程才能去更新UI。
Handler就是连接子线程和主线程的桥梁,我们可以在主线程中创建一个子线程来访问网络,子线程访问的结果返回到主线程中来做UI 更新。
直接实现方式:
1、主线程中新建一个子类继承Handler,并重写handleMessage(Message msg)方法实现监听来修改UI等主线程操作
2、主线程中创建一个Thread线程,并将上面的handler实例作为参数传入,
3、在子线程的run方法中待其他操作都完成后调用handler的handleMessage()或者handleEmptyMessage()方法调用主线程的监听。
一些耗时的操作都在子线程的run方法中执行。
主要代码如下:
<span style="white-space:pre"></span>@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.ubunta_btn:MyThread thread = new MyThread(new MyHandler());thread.start();break;}}class MyHandler extends Handler {public void handleMessage(Message msg) {switch(msg.what) {case 10 :text.setText("点击修改");Toast.makeText(getApplicationContext(), "sdsdsd", Toast.LENGTH_LONG).show();break;}}}class MyThread extends Thread {private Handler handler;public MyThread(Handler handler) {this.handler = handler;}@Overridepublic void run() {handler.sendEmptyMessage(10);}}
说明:还有一种做法是activity'直接实现android.os.Handler.Callback接口,直接在activity中重写handleMessage即可实现主线程的监听。
android中还提供了一个抽象类AsyncTask来实现异步的网络访问和UI更新操作,这里没做太多了解。
至于Http请求,android主要使用HttpURLConnection和Apache的HttpClient来访问网络,分get和post 方法
针对http请求可以封装成指定的工具类,以便项目搬运和公用,
实现思路主要是将请求地址url和参数map作为参数,将得到的结果以json形式返回,或者转成指定的java对象即可。
- Android开发之http请求
- android开发之http请求
- 【Android】Web开发之通过Apache接口处理Http请求
- Android开发之http网络请求返回码问题集合。
- Android开发之http网络请求返回码问题集合。
- Android开发之HTTP网络请求返回码
- Android开发之http网络请求返回码问题集合。
- swift开发之http请求
- android开发的http请求
- Android之Http请求基础
- Http请求之android-async-http 异步框架请求
- ios开发之HTTP请求常见错误
- iOS开发之适配http请求
- Android开发之网络请求
- Android 网络通讯之HTTP请求通信
- Android网络通讯之HTTP请求通信(一)
- Android网络通讯之HTTP请求通信(二)
- Android网络通讯之HTTP请求通信(三)
- IOS之Info.plist文件简介
- ucosii移植
- 项目中的一些个人心得
- C# 使用 dll文件
- Boost学习笔记--filesystem
- android开发之http请求
- zookeeper基本原理
- 使用SQLite创建数据库并显示于用户界面
- C++编程注意问题
- python的u'字符串"(字符编码):字符串前有u,表示字符串以unicode格式存储
- 最大字段和 冲出暴力枚举
- jeasyopc放在tomcat上不能获取配置信息的问题
- 【OpenCV】图像金字塔详解及编程实现
- This function has none of DETERMINISTIC, NO SQL解决办法