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

 

 

 

 

 

 

posted @ 2017-08-03 17:28  张开开  阅读(5150)  评论(0编辑  收藏  举报