Android四大组件之Activity
1. 什么是Activity?
是一个可以与用户交互的屏幕,例如打电话、拍照、地图、日历的界面
2. Activity 有7个生命周期方法(生命周期描述的是一个对象从创建(new出来)到死亡的过程中会执行的方法):
onCreate: 在Activity对象被第一次创建时调用
onStart: 当Activity变得可见时调用该函数
onResume: 当Activity开始准备于用户交互时调用该方法
onPause: 当系统将启动另外一个Activity之前调用该方法
onStop: 当前Activity变得不可见时调用该方法
onDestroy:当前Activity被销毁之前将会调用该方法
onRestart:当一个Activity再次启动之前将会调用该方法
1)当从第一个Activity进入第二个Activity,调用第一个activity的onPause,再调用第二个activity的onCreate、onStart、onResume,然后调用第一个activity的onStop
2)当从第二个Activity返回第一个Activi时,调用第二个activity的onPause,再调用第一个activity的onRestart、onStart、onResume,然后调用第二个activity的onStop、onDestroy
3. 生命周期可分为三个状态:无论出于哪一种状态,Activity不会自动释放自己占有的资源 -- 通过在onPause、onStop、onDestroy中写代码释放资源
1)Resumed:Activity对象运行状态
2)Paused: 另一个Activity位于前端,但是本Activity还可见 ,如 对话框
3)Stopped:另一个Activity位于前端,完全遮挡本Activity
4. 绑定布局。每新建一个activity,就要继承(extends)Activity类,复写onCreate(bundle)方法,然后绑定此activity的布局文件XML
publicclassBaseSwipeBacekextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main_layout);}}
5.创建的activity必须在AndroidManifest.xml里面注册,否则运行会抛出异常
<activityandroid:label="second"//标题android:name=".secondActivity">//包名.类名(包名可以省略)</activity>
6.启动Activity
Intentintent=newIntent();intent.setClass(this,SecondActivity.class);//this为Context对象,即当前Activity对象startActivity(intent);
7.两个Activity之间数据传递
基本数据类型可以通过Intent进行传递
1)传递数据
Intentintent=newIntent();intent.setClass(this,SecondActivity.class);intent.putExtra("key","数据");//第一个参数数Key,第一个参数是要传递的数据,可以是任意基本数据类型startActivity(intent);
2)取出数据
Intentintent=getIntent();Stringstr=intent.getStringExtra("key");//参数为Key,必须与传递过来的key一致
3) 如果要传递对象,可以通过Serializable序列化后在进行传递
让类实现Serializable接口,通过intent.getSerializableExtra取出对象
publicclassDataimplementsSerializable{privatestaticfinallongserialVersionUID=-3445893843765959236L;//序列化的串行版本标示publicStringname;publicintage;publicData(Stringname,intage){this.name=name;this.age=age;}}
publicclassFirstActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main_layout);Datadata=newData("小明",16);Intentintent=newIntent();intent.setClass(this,SecondActivity.class);intent.putExtra("key",data);startActivity(intent);}}
publicclassSecondActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.second_layout);Intentintent=getIntent();Datadata=(Data)intent.getSerializableExtra("key");}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。