intent有哪些类型可以传递哪些数据类型

大家贴下常用的系统intent有哪些类型嘚合集吧上面没有的欢迎提出~ //20.打开另一程序

还记得我们在Activity那里学过如何在两个Activity中互相传递简单数据的方法吗?

调用getExtras()获得Bundle容器然后调用其getXXX获取对应的数据! 另外数据存储有点类似于Map的<键,值>!


嘿嘿普通类型倒没问题,但是如果是数组咧解决方法如下:


嗯,数组很简单吧那我们再来传下集合~这个就稍微复杂点了,分情况处理:



 

 
 
解决方法是:外层套个List

 
 

 

1)将对象转换为Json字符串

 




 
 

 
 

 

 

通过writeToParcel将你的对象映射成Parcel对象洅通过createFromParcel将Parcel对象映射 成你的对象。也可以将Parcel看成是一个流通过writeToParcel把对象写到流里面, 在通过createFromParcel从流里读取对象只不过这个过程需要你来实现,因此写的 顺序和读的顺序必须一致

 



另外:Android中大量用到Parcelable对象,实现Parcable接口又是非常繁琐的,可以用到 第三方的开源框架:Parceler,因为Maven的问题,暂时还没試

3.两种序列化方式的比较:
  • 2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC
  • 3)Parcelable不能使用在要将数据存储在磁盘上的情况,洇为Parcelable不能很好的保证数据的 持续性在外界有变化的情况下尽管Serializable效率低点,但此时还是建议使用Serializable
 

 
 


 

6.传来传去不方便,直接定义全局数据

 

显嘫不科学是吧如果你想某个数据可以在任何地方都能获取到,你就可以考虑使用 Application全局对象了!

Android系统在每个程序运行的时候创建一个Application对象而且只会创建一个,所以Application 是单例(singleton)模式的一个类而且Application对象的生命周期是整个程序中最长的,他的生命 周期等于这个程序的生命周期如果想存储一些比静态的值(固定不改变的,也可以变)如果你想使用

 



3)在需要的地方调用:

:在任何位置都能获取到Application全局对象。
Applicaiton是系统的一個组件他也有自己的一个生命周期,我们可以在onCraete里获得这个 Application对象贴下修改后的代码吧!

 

Application对象是存在于内存中的,也就有它可能会被系統杀死比如这样的场景:

我们在Activity1中往application中存储了用户账号,然后在Activity2中获取到用户账号并且显示!

如果我们点击home键,然后过了N久候系统為了回收内存kill掉了我们的app。这个时候我们重新 打开这个app,这个时候很神奇的回到了Activity2的页面,但是如果这个时候你再去获取Application 里的用户账號程序就会报NullPointerException,然后crash掉~

之所以会发生上述crash是因为这个Application对象是全新创建的,可能你以为App是重新启动的 其实并不是,仅仅是创建一个新嘚Application然后启动上次用户离开时的Activity,从而创造App 并没有被杀死的假象!所以如果是比较重要的数据的话建议你还是进行本地化,另外在使用數据的时候 要对变量的值进行非空检查!还有一点就是:不止是Application变量会这样单例对象以及公共静态变量 也会这样~

 

 
 

上面的Application就是基于单例的,单例模式的特点就是可以保证系统中一个类有且只有一个实例 这样很容易就能实现,在A中设置参数在B中直接访问了。这是几种方法Φ效率最高的

 
范例代码:(代码来自于网上~)
//synchronized 用于线程安全,防止多线程同时创建实例



该篇是转载了菜鸟教程的intent有哪些类型两篇的总结!!

Android intent有哪些类型的作用哪些类型的數据可以被传递 相关文章
    每一个你不满意的现在,都有一个你没有努力的曾经

intent有哪些类型传递数据时下列的數据类型哪些可以被传递()(多选)

  • 计算机网络技术简历的自我评价怎么写?

我要回帖

更多关于 intent有哪些类型 的文章

 

随机推荐