Android四大组件之Activity

Activity生命周期

Activity生命周期的4种状态
活动状态(resume)
    Activity调用onResume获取焦点
暂停状态(paused)
    Activity调用onPause方法,失去焦点,但是可见
停止状态(stopped)
    Activity调用onStop方法,不可见
死亡状态(destroy)
    Activity调用onDestroy(弹出栈释放资源),或者finish方法(弹出栈,不释放资源)
Activity生命周期的7个回调方法
方法名特点
onCreate当Activity第一次创建时被调用 在该方法中我们应该执行 创建视图 初始化数据 该方法被调用后调用onStart
onStart当Activity对用户可见被系统调用
onResume当Activity与用户交互 获取焦点时 被系统调用
onPause当Activity失去焦点 但是可见的时候 被系统调用
onStop当Activity不可见的时候 被系统调用
onDestroy当Activity将被销毁前调用 为了释放资源
onRestart当Activity处于stop状态之后 如果重新启动Activity会调用该方法
横竖屏切换时的生命周期
1,默认是先将Activity销毁再创建
    onCreate onStart onResume onPause onStop onDestroy onCreate onStart onDestroy
2,设置切换屏不会销毁
    android:configChanges="orientation|keyboardHidden|screenSize"
3,如何固定Activity的方向
    1,清单文件中:android:screenOrientation="portrait"//portrait表示垂直,landscape水平
    2,代码中
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//水平

Activity之间跳转

显示跳转
1,Intent intent = new Intent(Context,SecondeActivity.class);
2,Intent intent = new Intent(Context,"com.test.SecondActivity");
3,Intent intent = new Intent("程序包名","com.test.SecondActivity");
隐式跳转
Intent intent = new Intent();
intent.setAction("要开启的Activity在清单文件中的Action名字");
intent.addCategory(Intent.category.Default);
开启Activity的两种方式
第一种:startActivity(Intent intent);

第二种:startActivityForResult(int resultCode,Intent intent);
Activity间的数据交换
第一种:
    FirstActivity中:intent.putExtra("key","value");
    SecondActivity中:
        Intent intent = getIntent();
        intent.getXXXExtra("key");
第二种:
    StartActivityForResult(int resultCode,Intent intent);
    setResult(int resultCode,Intent intent);
    onActivityResult(int requestCode,int resultCode,Intent intent);

Activity的任务栈和4种启动模式

Activity的任务栈
任务栈:
    1,开启程序,创建一个任务栈
    2,打开一个Activity,进栈
    3,离开一个Activity,出栈
    4,退出程序,任务栈会被销毁
缺点:
    每次打开一个Activity都会添加到栈
    1,用户体验差,因为要点多次返回才可以退出
    2,重复数据太多,严重的导致内存溢出
Activity的启动模式
作用:就是为了解决任务栈造成的用户体验差,重复数据太多的问题
设置:android:launchMode="standard"
启动模式特点应用场景
standard打开一个Activity,添加一个实例默认都是
singleTop栈顶复用模式,如果要开启的activity在任务栈的顶部已经存在,就不会创建新的实例流程支付 返回时直接到付款页面
singleTask栈内复用模式,如果要开启的activity在任务栈的内部已经存在,就不会创建新的实例浏览器 当其他应用打开浏览器 不管浏览多少页面 只用一个实例
singleInstance单一实例模式,会重新创建一个栈结构,只存该Activity的实例打电话进来 ,整个系统只能打一个实例
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值