Activity

Activity

  • 安卓四大组件之一

创建Activity

  • 定义java类,继承Activity
  • 在清单文件中配置activity标签

Activity跳转

显式跳转
  • 同一应用中,指定目标Activity的字节码和当前的上下文
  • 不同应用中,指定目标Activity所在的应用的包名和目标Activity的包名加类名
隐式跳转
  • 系统会在所有清单文件中寻找与程序员创建的intent匹配的intent-filter,找到则启动,找不到则抛异常
  • 匹配就是intent-filter中定义了什么属性,程序员创建的intent中也必须设置什么属性
  • 在清单文件的activity标签下,配置intent-filter子节点,其中再配置action和category
应用场景
  • 启动同一应用中的Activity,用显式
  • 启动不同应用中的Activity,用隐式
  • 显式启动效率高于隐式
  • 如果系统找到了多个intent-filter与程序员创建的intent匹配,那么就会弹出对话框,列举所有匹配的Activity,让用户选择

Activity跳转传递数据

  • Activity跳转时,可以把数据封装在intent对象中
  • intent中可以封装的数据类型:八大基本数据类型和字符串及它们的数组,还有实现了序列化接口的对象,还有bundle对象
  • 数据可以先封装至Bundle,再把Bundle封装至intent

Activity生命周期

  • onCreate:创建时调用
  • onStart:在屏幕上可见,但是还没有获得焦点
  • onResume:可见并且获得焦点
  • onPause:可见,但是失去焦点
  • onStop:不可见
  • onDestroy:销毁时调用
  • 手机内存不足时,会杀死之前启动的进程,按照LRU算法(最近最少使用)锁定杀死谁

Activity的启动模式

  • Activity task stack:任务栈

    • 连续的内存空间
    • 后进先出
  • 标准模式:默认就是标准模式
  • singleTop:如果Activity的实例不在栈顶,那么就会创建,如果已经在栈顶了,就不会再创建了
  • singleTask:如果Activity没有被创建任何实例,那么启动时会创建,如果已经创建了一个实例,那么启动时是返回至该Activity而不会再创建该Activity
    • 保证栈中永远只有一个该Activity的实例
  • singleInstance:在一个单独的任务栈中创建该Activity的实例,然后再也不会创建第二个实例了,以后的每次启动该Activity,都是把该Activity所在的栈显示至前台
    • 保证整个系统的内存都只有一个该Activity的实例

横竖屏切换

  • 默认情况横竖屏切换会触发生命周期方法重新执行,Activity销毁重建
  • 用以下代码让横竖屏切换时不重建Activity

    android:configChanges="orientation|screenSize|keyboardHidden"
    
  • 用以下代码写死屏幕方向

    android:screenOrientation="portrait"
    

Activity摧毁时返回数据

  • 请求码
  • 结果码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值