补充:在配置文件中配置Activity,只需要在<application>标签内,然后使用<activity android:name="acitivity所在的路径"> </activity>即可完成非主活动的注册!
一、Intent的使用
1、使用显式的Intent
Intent intent = new Inent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
上面的代码“意图”就非常明显,在FirstActivity的基础上打开第二个Activity,然后通过startAcitivity把Intent对象传进去,即可完成!
2、使用隐式Intent
通过配置<action>和<category>标签来实现隐式调用Intent的效果,其中每一个Intent只能指定一个action,可以指定多个category,只有当两者全部满足时对应的活动才能响应对应的intent,注意android.intent.category.DEFAULT是一种默认的category,在活动调用时会自动调用这个category
此外,使用隐式Intent不仅可以启动自己程序内的活动,当然还可以启动其他程序的活动,这就使Android应用程序实现了功能之间的共享。在配置文件<intent-filter>标签里通过<data android: >标签内通过配置,可以指定当前活动到底可以什么类型的数据。
3、向下一个活动传递数据
实例代码如下:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data","I am FirstActivtyInfo!");
startActivity(intent);
首先声明实例化一个Intent对象,然后用putExtra方法以键值对的方式把数据封装到intent对象中,然后启动活动即可。
关于取值如下:
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
首先通过getIntent()方法获取传递过来的Intend对象,然后用相应的取值方法,取出数据即可。
4、返回数据给上一个活动
FirstActivity代码如下:
Intent intent = new Intent(FirstActivity.this,SeondActivity.class);
startActivityForResult(intent,1);
//startActivityForResult()方法第一个参数的意思传递一个intent对象,第二个参数是一个请求码,用于在之后的回调中判断数据的来源
//当SecondActivity销毁之后将执行onActivityResult()方法
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case 1:
if(resultCode = RESULT_OK){
String returnData = data.getStringExtra("data_return");
}
break;
default:
}
}
SecondActivity得代码如下:
//通过按钮点击事件之后,然后向上一个活动传递数据,当第二个Activity销毁之后会回调FirstActivity()的中的onActivityResult()方法
Intent intent = new Intent();
intent.putExtra("data","hello FirstActivity");
//setResult()方法第一个参数是返回数据时处理的结果,RESULT_OK或者RESULT_CANCEL
setResult(REULT_OK,intent);
finish();
总的逻辑是这样的,首先用startActivityForResult()方法,启动SecondActivity,然后用setResult()方法传入处理的结果和intent对象,
最后会调用onActivityResult()方法,首先判断数据来源,就是startActivityForResult(intent,1);传入的请求码,然后判断处理的结果,最后进行相应的逻辑处理即可。
注意:上面是通过按钮(代码)实现活动的销毁,如果通过点击Back键进行返回数据的话,则要在SecondActivity中复写下面的方法。
@Override
public void onBackPressed(){
Intent intent = new Intent();
intent.putExtra("data_return",hello FirstActivity);
setResult(RESULT_OK,intent);
finish();
}
5、活动的生命周期
(1)onCreate()
当活动第一次创建的时调用该方法,因此在该方法内应完成一些初始化操作,例如加载布局,绑定事件等等。
(2)onStart()
当一个活动由不可见变为可见的时候进行调用
(3)onResume()
当活动准备好和用户交互的时候进行调用,此时该活动一定位于返回栈的栈顶,而且处于运行的状态
(4)OnPause()
举个例子在对话框的打开的时候,如果在对话框下面存在一个界面的话,那么这个界面就处于暂停的状态
(5)onStop()
在活动完全不可见的时候进行调用
(6)onDestroy()
在活动被销毁之前进行调用,之后活动将进入销毁状态
(7)onStart()
在活动由停止状态变为停止状态之前进行调用,就是活动被重新启动了
6、活动的启动模式(在配置文件里<activity android:launchMode="启动模式的名称">)
(1)standard模式
系统默认的一种活动启动模式,遵循栈的原则,每次打开都要打开一个新的Activity,不管该Activity是否已经存在
(2)singleTop模式
如果将要打开的活动已经处于栈顶,则不再进行创建新的实例
(3)singleTask模式
当要启动一个活动时,系统将会在返回栈中检查该活动的实例是否已经存在如果已经存在,则把该实例上面的所有活动实例全部出栈,否则创新一个新的活动实例
(4)singleInstance模式
当一个活动的启动模式被指定成singleInstance模式时,那么就有一个单独的栈来管理该活动,当进行返回时,另一个栈里里面的活动全部出栈之后,这个单独栈里面的
活动才回出栈。