android下常用的数据传递方式可以为四种,分别为:
1.通过Intent传递数据。
2.通过静态变量传递数据。
3.通过剪贴板传递数据。
4.通过全局变量传递数据。
下面分别来说下这四种方式如何实现。
一。Intent传递数据
通过Intent传递的数据可以是字符串、数字等其它数据类型,同时也可以传递一个可序列化的类,也就是实现了Serializable接口。我们都可以通过Intent下的putExtra方法进行传递,在接收的activity类里面,使用getIntent().getXXX系列方法进行获取即可。具体如何获取,这里不详细例举。
二。通过静态变量传递数据
该方法较为容易,只需要在接收的activity类里面,定义静态变量,然后在赋值的activity进行赋值即可。
三。通过剪贴板传递数据
ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText("通过剪贴板传递数据");
接收方activity直接获取即可
clipboard.getText().toString();
不过这种方法不推荐使用,因为该方法只能传递字符串,像int,bool,byte,short或者实现了Serializable接口的均无法传递,就算要传递,也需要转换成字符串才能进行传递,效率上较低,同时也提高了代码的维护难度。
四。通过全局变量传递数据
开发过javaWEB的应该都知道Page,request,Session,Application这几个作用域,其中application可以在任何地方进行访问,除非将Web服务停止,否则将一直存在,如果使用较多,是非常消耗内存的。
android里面提供了一个类似于Web的Application,我们可以通过Application进行数据的传递,不过这种方法官方不建议使用,因为消耗内存,如果使用不当甚至会造成内存溢出,如存储大量的bitmap。
使用全局变量的话,我们需要继承Application类,示例代码如下:
public classUserInfo extends Application{
public String username;
publicString password;
}
然后需要在androidManifest.xml里面进行描述,需要加入如下代码:
<application android:name=".UserInfo" />
描述后,程序在运行的时候,对象会被自动创建,而且会一直在内存中驻留。直到程序退出为止。
使用的话就比较容易了,看如下代码。
UserInfo userinfo = (UserInfo)getApplicationContenr();
userinfo.username="aaa";
接着如何使用,就很容易了,跟用实体类一样,设置值即可。
获取代码如下:
UserInfo userinfo = (UserInfo)getApplicationContenr();
Log.i("用户名为:",userinfo.username);