zoukankan      html  css  js  c++  java
  • android数据交互方式(整理)

     

    不同模块传递数据(不同activity

    利用intent对象

     

    简单数据:

    设置参数:

     

    接收参数:

     

     

     

     

    复杂数据:

     

     

    接收参数:

     

     

     

     

    实现serializable接口

     

    利用Java语言本身的特性,通过将数据序列化后,再将其传递出去。

     

     

    后台接收:

     

     

    实现Parcelable接口方式

     

    这个是通过实现Parcelable接口,把要传的数据打包在里面,然后在接收端自己分解出来。这个是Android独有的,在其本身的源码中也用得很多,

     

    因为其本质也是序列化数据,所以这里要注意定义顺序要与解析顺序要一致

     

     

     

    设置参数:

     

    接收

     

     

     

    通过单例模式:

    单例模式的特点就是可以保证系统中一个类有且只有一个实例。实现线程安全

    定义一个单例类。

     

     

    设置参数:

     

     

    接收参数:

     

     

     

     

    Ui线程和子线程交互方式。

    1、Handler

    handlerandroid中专门用来在线程之间传递信息类的工具。

    方法:

    假设A线程要传递信息给B线程,我们需要做的就是

    1、在B线程中调用Looper.prepareLooper.loop。(主线程不需要)

    2、 编写Handler类,重写其中的handleMessage方法。

    3、创建Handler类的实例,并绑定looper

    4、调用handlersentMessage方法发送消息。

    2Activity.runOnUIThread(Runnable)

    使用方法:

     1、编写后台线程,这回你可以直接调用UI控件

    2、创建后台线程的实例

    3、调用UI线程对应的ActivityrunOnUIThread方法,将后台线程实例作为参数传入其中。

    注意:无需调用后台线程的start方法

    3、View.Post(Runnable)

    使用方法:

    1、编写后台线程,这回你可以直接调用UI控件,但是该UI控件只能是View

    2、创建后台线程的实例

    3、调用UI控件Viewpost方法,将后台线程实例作为参数传入其中。

    4View.PostDelayed(Runnabe,long)

    同上:只不过加上等待多长时间后再运行后台进程。

    5AsyncTask

    AsyncTask是一个专门用来处理后台进程与UI线程的工具。通过AsyncTask,我们可以非常方便的进行后台线程和UI线程之间的交流。

    AsyncTask拥有3个重要参数

    1Params

    2Progress

    3Result

    Params是后台线程所需的参数。在后台线程进行作业的时候,他需要外界为其提供必要的参数,就好像是一个用于下载图片的后台进程,他需要的参数就是图片的下载地址。

    Progress是后台线程处理作业的进度。依旧上面的例子说,就是下载图片这个任务完成了多少,是20%还是60%。这个数字是由Progress提供。

    Result是后台线程运行的结果,也就是需要提交给UI线程的信息。按照上面的例子来说,就是下载完成的图片。

    AsyncTask拥有4个重要的回调方法。

    1onPreExecute

    2doInBackground

    3onProgressUpdate

    4onPostExecute

    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、最后调用AsyncTaskexecute方法,传入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

     

  • 相关阅读:
    【ArchSummit干货分享】个推大数据金融风控算法实践
    Markdown 使用锚点
    部署ghost博客
    部署git server
    ubuntu 修改ssh远程主机名称,mac开机运行命令,静默方式启动virtual box虚拟机,静默执行run脚本
    meteor 实现 微信分享
    Android or iOS 运行 meteor App 屏幕一片空白 White screen的解决方法
    Ubuntu 修改用户密码与启动root账号
    meteor icons & splash配置
    meteor 安装 android sdk慢的改进方法
  • 原文地址:https://www.cnblogs.com/zhangkaikai/p/7280894.html
Copyright © 2011-2022 走看看