四大组件之活动(Intent、生命周期、启动模式)


补充:在配置文件中配置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模式时,那么就有一个单独的栈来管理该活动,当进行返回时,另一个栈里里面的活动全部出栈之后,这个单独栈里面的

活动才回出栈。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值