Activity解析

1_隐式意图和显式意图

    意图的作用:激活组件, 传递数据;
    组件:Activity,Service,broadcastReceiver,contentProvider;


    隐式意图:在开启目标activity时,没有直接指定activity的名称,而是通过指定一组动作\数据\类型等,让系统在清单文件中自动的去匹配activity,如果匹配到了就打开;
    模版代码:

        //打开第二个界面
       Intent intent =new Intent();
       // 设置动作,是目标activity的动作
       intent.setAction("com.itheima.multiview.SECONDACTIVITY");
       
       // 设置数据,是目标activity的数据
       intent.setData(Uri.parse("itheima://abc"));
       
       // 添加类型,是目标Category的数据
       intent.addCategory("android.intent.category.DEFAULT");
       
       // 打开第二个界面
       startActivity(intent);

    应用场景:适合开启另外一个软件中的activity; 执行的速度慢;


     显式意图:在开启目标activity时,直接指定了activity的名称,然后打开这个activity;

    模版代码:

    // 使用显示意图打开第二个界面
       Intent intent =new Intent(this,SecondActivity.class);
       // 打开第二个界面
       startActivity(intent);

    应用场景:适合开启自己工程中activity;执行的速度快;

2_意图传递数据(重点)

    意图可以传递的数据类型:
    1.八大基本类型及其数组;
    2.parcelable(把对象序列化到内存中),serializable(把对象序列化到文件中);
    3.bundle:类似于map集合;
    4.intent:

    使用的方法:putExtra(),putExtras();

3_开启activity获取返回值

    从第一个界面跳转到第二个界面,当第二个界面关闭时给第一个界面返回数据,第一个界面接收到第二个界面返回的数据.
    1.startActivityForResult()
    2.在第二个界面中 调用setResult方法设置返回数据,然后调用finish方法关闭当前界面;
    3.在第一个界面中调用onActivityResult方法接收从第二个界面返回的数据;
    
4_activity的生命周期

    生命周期:对象从被创建到被销毁的这段时间内调用的方法;
    暗恋,初恋,热恋,痴恋,失恋;

    onCreate:当activity实例被创建后调用这个方法 初始化实例对象
    onStart:界面可见后调用这个方法
    onResume:界面获得焦点后调用这个方法
    onPause:界面失去焦点后调用这个方法
    onStop:界面不可见后调用这个方法
    onRestart:最小化的界面被打開后調用這個方法
    onDestroy:activity实例被销毁前调用这个方法 通常在界面銷毀之前調用這個方法保存數據

    打开一个界面调用了onCreate,onStart,onResume;
    关闭一个界面调用了onPause,onStop,onDestroy;
    最小化一个界面调用了onPause,onStop;
    打开最小化的界面调用了:onRestart,onStart,onResume;
    
5_读文档查看activity的生命周期

    完整的生命周期:从实例对象被创建到被销毁期间,调用的方法:onCreate,onStart,onResume,onPause,onStop,onDestroy;
    可视生命周期:从界面可见到界面不可见的期间,调用的方法:onStart,onResume,onPause,onStop;
    前置生命周期:从界面获得焦点到失去焦点的期间,调用的方法:onResume,onPause;
    
 6_横竖屏切换的生命周期
    
    横竖屏切换的生命周期的变化:关闭前一个界面,打开一个新的界面,调用的方法有:onPause,onStop,onDestroy, onCreate,onStart,onResume;
    设置屏幕的方向: 在activity节点中设置android:screenOrientation="sensor"( landscape横屏 portrait竖屏 sensor横竖屏自适应)
    禁止调用生命周期的方法: 在activity节点中设置android:configChanges="keyboardHidden|orientation|screenSize"

7_activity的启动模式:standar/singleTaskr/singletop/singleinstance

    standar模式:当应用程序一启动的时候系统就给提供了一个任务栈,当打开一个界面时,就会这个界面对应的activity实例压入到栈中;当关闭一个界面时,就会从任务栈中把这个界面对应的activity实例清除出去;当界面都关闭了,任务栈就被清空了,应用程序也随着退出了.
    singletop单一顶部模式:当打开一个界面,系统会在任务栈中检查位于顶部的任务是不是当前任务,如果是,就不会创建一个新的实例对象,而是使用位于栈顶的这个对象;
    singleTask单一任务模式:当打开一个界面,系统会在任务栈中检查有没有这个activity对应的任务,如果有,会把位于它上面的所有任务都清除掉,然后使用这个任务;
    singleinstance单例模式:当打开一个界面,系统会给它提供一个特殊的任务栈,在特殊的任务栈中,只有它的实例对象存在;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值