android开发之数据共享(参数传递)

来源:互联网 发布:网络对时软件 编辑:程序博客网 时间:2024/04/29 01:54

一、android的生命周期

       android的生命周期可以理解为activity的生命周期,其实一个activity即使一个手机的交互页面,activity的生命周期可以用七个方法表述,activity启动后以栈的形式保存,先打开的activity在栈低,后打开的在栈顶,所以后打开的先出来。

       onCreate(Bundle savedInstanceState),   初始化界面

       onStart()启动

       onRestart()  挂起之后重新启动

       onResume()  展示

       onPause();    挂起

       onStop();    停止

       onDestory();   销毁

下图对activity的生命周期做了一个详细的展示,主要有三个过程

完整的流程为:

onCreate --》onStart()-->>onResume()-->>onPause()-->>onStop()-->>onDestory()

activity被从可见到不可见的过程

onResume()-->>onPause()-->>onStop()

不可见到可见的过程

onStop()-->>onRestart()-->>onStart()



二、android中数据的传递

1、使用全局变量传递数据,声明一个java类 Test.java,继承android.app.Application;然后再该类中声明的属性即可作为全局变量用,属性设置对应get、set方法,然后实现onCreate()方法初始化这些变量,最后在AndroidManifest.xml的application节点中声明android:name="类路径+全名"即可实现在app启动的时候加载该类,实现全局变量的目的


2、剪切板的使用

得到剪切板的句柄:

    ClipboardManager clibboardManager = getSystemService(Context.CLIBBOARD_SERVICE);

    clibboardManager .setText(String s);  //设置变量到剪切板

    同样得到句柄之后clibboardManager .getText(String s) 即可得到参数值


当利用剪切板传递对象的时候,要求对象是可序列化的对象,impelements Serializable接口。属性有get、set方法以及无惨构造函数,传递的原理就是将对象以流的形式转成string类型的参数,然后接收参数的时候再将string类型的数据反序列化成java对象即可

android.util.Base64提供了一些列将其他数据类型和base64字串相互转换的方法,如encodeToString(),decode();


将对象转成base64串

MyData myData = new MyData();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);objectOutputStream.writeObject(myData);String str = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);

base64串还原对象


byte[] base64_array = Base64.decode(str, Base64.DEFAULT);



3、使用intent传递数据

Intent intent = new Intent(this, TargetActivity.class);

intent.putExtra("str", value);

intent.putIntExtra("name", intValue);


TargetActivity在onCreate方法里可以接收这些参数

intent = getIntent();

intent.getExtra("name");

intent.getIntExtra("name", 0);


intent本身对传递对象作了实现

Intent  intent = new Intent(this, TargetActivity.class);

Mydata mydata = new MyData();

Bundle mBundle = new Bundle();

mBundle .putSerializable("name", myData);

intent,putExtras(mBundle );









0 0