android数据交互方式(整理)
不同模块传递数据(不同activity)
利用intent对象
简单数据:
设置参数:
接收参数:
复杂数据:
接收参数:
实现serializable接口
利用Java语言本身的特性,通过将数据序列化后,再将其传递出去。
后台接收:
实现Parcelable接口方式
这个是通过实现Parcelable接口,把要传的数据打包在里面,然后在接收端自己分解出来。这个是Android独有的,在其本身的源码中也用得很多,
因为其本质也是序列化数据,所以这里要注意定义顺序要与解析顺序要一致
设置参数:
接收
通过单例模式:
单例模式的特点就是可以保证系统中一个类有且只有一个实例。实现线程安全
定义一个单例类。
设置参数:
接收参数:
Ui线程和子线程交互方式。
1、Handler
handler是android中专门用来在线程之间传递信息类的工具。
方法:
假设A线程要传递信息给B线程,我们需要做的就是
1、在B线程中调用Looper.prepare和Looper.loop。(主线程不需要)
2、 编写Handler类,重写其中的handleMessage方法。
3、创建Handler类的实例,并绑定looper
4、调用handler的sentMessage方法发送消息。
2、Activity.runOnUIThread(Runnable)
使用方法:
1、编写后台线程,这回你可以直接调用UI控件
2、创建后台线程的实例
3、调用UI线程对应的Activity的runOnUIThread方法,将后台线程实例作为参数传入其中。
注意:无需调用后台线程的start方法
3、View.Post(Runnable)
使用方法:
1、编写后台线程,这回你可以直接调用UI控件,但是该UI控件只能是View
2、创建后台线程的实例
3、调用UI控件View的post方法,将后台线程实例作为参数传入其中。
4、View.PostDelayed(Runnabe,long)
同上:只不过加上等待多长时间后再运行后台进程。
5、AsyncTask
AsyncTask是一个专门用来处理后台进程与UI线程的工具。通过AsyncTask,我们可以非常方便的进行后台线程和UI线程之间的交流。
AsyncTask拥有3个重要参数
1、Params
2、Progress
3、Result
Params是后台线程所需的参数。在后台线程进行作业的时候,他需要外界为其提供必要的参数,就好像是一个用于下载图片的后台进程,他需要的参数就是图片的下载地址。
Progress是后台线程处理作业的进度。依旧上面的例子说,就是下载图片这个任务完成了多少,是20%还是60%。这个数字是由Progress提供。
Result是后台线程运行的结果,也就是需要提交给UI线程的信息。按照上面的例子来说,就是下载完成的图片。
AsyncTask拥有4个重要的回调方法。
1、onPreExecute
2、doInBackground
3、onProgressUpdate
4、onPostExecute
onPreExecute运行在UI线程,主要目的是为后台线程的运行做准备。当他运行完成后,他会调用doInBackground方法。
doInBackground运行在后台线程,他用来负责运行任务。他拥有参数Params,并且返回Result。在后台线程的运行当中,为了能够更新作业完成的进度,需要在doInbackground方法中调用PublishProgress方法。该方法拥有参数Progress。通过该方法可以更新Progress的数据。然后当调用完PublishProgress方法,他会调用onProgressUpdate方法用于更新进度。
onProgressUpdate运行在UI线程,主要目的是用来更新UI线程中显示进度的UI控件。他拥有Progress参数。在doInBackground中调用PublishProgress之后,就会自动调onProgressUpdate方法
onPostExecute运行在UI线程,当doInBackground方法运行完后,他会调用onPostExecute方法,并传入Result。在onPostExecute方法中,就可以将Result更新到UI控件上。
使用方法:
1、编写一个继承AsyncTask的类,并声明3个参数的类型,编写4个回调方法的内容。
2、然后在UI线程中创建该类(必须在UI线程中创建)。
3、最后调用AsyncTask的execute方法,传入Parmas参数(同样必须在UI线程中调用)。
另外值得注意的2点就是,千万不要直接调用那四个回调方法。还有就是一个AsyncTask实例只能执行一次,否则就出错。
示例:
Android客户端到服务器交互方法
(TCP): scoket
服务器监听。
优点:1.传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低
2.传输数据时间短,性能高
3.适合C/S之间信息实时交互
4.可以加密,数据安全性高
缺点: 1.需要对传输的数据进行解析,转化为应用级的数据
2.对开发人员的开发水平要求高
3.相对于Http协议传输,增加了开发量
http:
优点:1.基于应用级的接口使用方便
2.要求的开发水平不高,容错性强
缺点: 1.传输速度慢,数据包大。
2.如实现实时交互,服务器性能压力大
3.数据传输安全性差
同springMVC数据交互方式相同。Andriod就相当于一个前端页面。
参考地址:http://blog.csdn.net/android_hdh/article/details/52192991
http://www.cnblogs.com/zhawj159753/p/3949956.html
http://www.2cto.com/kf/201402/278147.html
http://www.cnblogs.com/X-knight/p/5406362.html
*****http://www.2cto.com/kf/201501/370468.html
转载于:https://www.cnblogs.com/zhangkaikai/p/7280894.html
android数据交互方式(整理)相关推荐
- Android笔记(七十三) Android权限问题整理 非常全面
Android权限系统非常庞大,我们在Android系统中做任何操作都需要首先获取Android系统权限,本文记录了所有的Android权限问题,整理一下分享给大家. 访问登记属性 android.p ...
- Android与H5相互接口调用及Android端接口整理
近几年随着HTML5的功能越来越强大,H5页面的性能虽然稍差,单其灵活性很高,更新页面成本比原生小很多,一个页面可以被android和ios同时使用开发成本也比较低,所以移动端的开发已经不是单单的原生 ...
- android 常用框架整理
文章目录 UI 框架 WebView 框架 具体内容 UI 卫星菜单 节选器 下拉刷新 模糊效果 HUD与Toast 进度条 UI其他 动画 网络相关 网络连接 网络测试 图像获取 响应式编程 地图 ...
- GitHub 优秀的 Android 开源项目 淘宝技术牛p博客整理开发中最常用的GitHub上 优秀的 Android 开源项目整理(精品)...
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...
- Android技术面试整理
colife Android技术面试整理 前19题为常考题目!! 1.Android的四大组件是哪些,它们的作用? 2.请介绍下Android中常用的五种布局. 3.android中的动画有哪几类, ...
- Android 第三方SDK整理
Android 第三方SDK整理 此文章为转载,仅用于学习使用,具体内容访问此链接 import java.util.HashMap;public class Sdk {/***by:默小坑2020. ...
- Android数据持久化:SharePreference
SharePreference:作为Android数据持久化的一种,具有一定的便捷性,适合存储一些体积小的数据. 存储数据方式:键值对的方式,类似于Map: 利用SharePreference.Edi ...
- [Android实例] 最全的Android开发资源整理--进阶必备
本帖最后由 一切随枫 于 2014-6-9 12:08 编辑 原文链接: http://stormzhang.github.io/android/2014/06/05/android-awesome- ...
- Android数据存储——2.文件存储_B_资源文件
今天学习Android数据存储--文件存储_资源文件 把资源文件mybook.txt放入项目目录下的res资源文件夹下的raw文件夹下(没有则新建),PS:mybook.txt存为UTF-8编码. X ...
- HTTP API响应数据规范整理
2019独角兽企业重金招聘Python工程师标准>>> 关于作者 马隆博(Lenbo Ma),Java,Javascript Blog: http://mlongbo.com E-M ...
最新文章
- 电灯泡内通有交流电,为什么看不到灯泡在闪烁?
- oracle雾化试图_Oracle 物化视图 说明
- Map转xml格式字符串
- HDU - 3081 Marriage Match II(二分+并查集+最大流/匈牙利删边)
- 阿里云参加ONS EU 2018,飞天洛神亮相网络顶会
- SAP 导出 HTML,【我sap这导出数据表格export.mhtml怎么转换为 excel 工作表.xlsx】excel生成html表格数据...
- 优秀!港大同济伯克利提出Sparse R-CNN: 目标检测新范式
- 考公 | 张小龙讲申论(2019地市级真题)
- 利用MATLAB编写高斯积分
- 接口测试工具--Postman安装
- APP安全——反编译分析(反编译、再编译、签名)
- 什么是串行接口和并行接口
- 谷歌google浏览器升级后发生个人资料错误 发送反馈解决方法
- [LINUX服務器搭建套餐]2.安裝mysql
- 【C++】队列优先队列详解——deque.queue.priority_queue
- [情侣空间] 基于spring boot的自制情侣空间
- android 自定义ImageView实现图片手势滑动 多点触摸放大缩小效果
- Unity官方中文版(有生之年终于等到了)
- php 实现店铺装修5
- 别错过他们砍预算留给你的机会
热门文章
- PIM SSM技术原理与实验
- linux安装neo4j
- Linux查看系统版本命令 linux学习教程
- Java基础知识(一) 自增、自减运算符
- ajax请求后台php数据时查看报错parse error
- 《Python游戏编程快速上手》一第1章 安装Python
- Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:
- ducument.ready不生效的问题 ruby on rails
- 《pro Spring》学习笔记之Spring HTTP 远程方法调用
- Linux群常见问题整理(一)[转]