Android数据传递相关内容概述
创始人
2024-06-22 06:10:51
0

在Android这一操作系统中对于数据的传递,实现的方法多样化,大家可以根据自身的不同需求来选择一个适合自己的方法来进行操作。在这里我们就先为大家详细介绍一下Android数据传递的相关方法。

首先我们在Android中用的最多的就是Activity之间的传值

Activity之间的传值

在Activity之间传值,我们是通过Intent来完成的。这部分相信有点基础的兄弟们都会知道我们是利用Intent的Extra部分来存储我们想要传递的data的。举例如下:

 

  1. Intent i = new Intent(this, YourClass.class);   
  2. i.putExtra(YOURDATA, data);   
  3. startActivity(i);   
  4. Intent i = new Intent(this, YourClass.class);  
  5. i.putExtra(YOURDATA, data);  
  6. startActivity(i);  

这里需要注意的是putExtra method,它的***个参数必须有package前缀,也就是说我们不能随意指定一个String,而必须带有package prefix,如例子中我们可以定义YOURDATA如下:

 

  1. public final static String YOURDATA = 
    "com.javaeye.notfatboy.testArg";   
  2. ublic final static String YOURDATA = 
    "com.javaeye.notfatboy.testArg";  

而第二个参数可以是int, long, char等等很多种类型,具体见putExtra()#t#

实际上Intent的使用范围要广泛的多,我们可以在任何使用Intent的地方来通过Extra进行传值,推而广之,我们也可以给Service传值,给Broadcast Receiver传值,而这也说明了另一个问题,即我们可以通过这种方式在不同的进程和线程之间进行传值,因为Activity,Service,Broadcast这些Components可以在不同的进程或者线程之中,这也是Android为我们提供的一个轻量级的进程,线程间通信的方式。

除此之外,Android还为我们提供了一些稍微复杂点的传值机制,就Thread而言,我们可以通过Message Queue来实现Android数据传递。

Messag Queue

Message Queue是个非常有用而且有趣的机制。假设我们有两个Thread,一个是thread A,另一个是thread B。 thread A有一个Message Queue,并且对应一个Handler来处理Message,这是只要thread B获取了该Handler的reference就可以给发送消息给Thread A。举例如下:

 

  1. public class ThreadB extends Thread {   
  2. ....   
  3. public void run(){   
  4. ...   
  5. String str = "Test String";   
  6. Message msg = mHandler.obtainMessage(1, str);   
  7. mHandler.sendMessage(msg);   
  8. ..   
  9. }   
  10. }   
  11. public class ThreadB extends Thread {  
  12. ....  
  13. public void run(){  
  14. ...  
  15. String str = "Test String";  
  16. Message msg = mHandler.obtainMessage(1, str);  
  17. mHandler.sendMessage(msg);  
  18. ..  
  19. }  

当然Message Queue还有很多其他的使用方法,在这里就不再一一赘述,有兴趣的同学可以再仔细研究下,此处只做抛砖引玉。

对于IPC进程通信而言,Android也提供了一个稍微复杂点的机制--- AIDL

AIDL

在Android当中我们可以通过AIDL来定义特定的接口,从而实现RPC,而不再是简单的传值,关于这部分已经有很多文章介绍了详细使用方法,不再赘述。

Android数据传递的相关方法就为大家介绍到这里。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...