Day5-Activity活动

Activity   活动 Android四大组件之一
Android 四大组件

  1.Activity活动
                2.Service  
服务
                3.BroadCastReceiver 
广播接收者
                4.ContentProvider 
内容提供者
Activity:活动 每个活动都会绑定一个布局文件作为展示的页面
                
我们定义的Activity都是 Activity的子类
Activity 
活动是 Context的子类
Context:上下文对象视图业务逻辑等存在的环境

Activity的创建方式
1.
在包右键 new - Activity- EmptyActivity-起个名字即可

2.在包 右键 new - Java class -起个名字并且继承Activity
  
然后在该类中重写 onCreate方法
   
res/layout/创建一个布局文件作为该Activity的绑定布局文件
   
在类的onCreate方法中 添加方法 setContentView(R.layout.布局id)
   
在清单文件中注册: manifest文件中
   
<application标签下面添加 <activity标签后添加属性name并将
   
该类的包名和类名添加进去即可

Activity在创建后必须在清单文件Manifest文件中注册

 在注册时候时候如果当前的Activity添加了
  <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
则表示该Activity的页面是启动页面


Activity的生命周期


 


一共七个方法

onCreate():活动第一次被创建,一般用于初始化,例如加载布局,绑定事件,获取组件的引用等.

onStart():由不可见变为可见时调用.

onResume()[rɪ'zjuːm]:在活动准备好和用户进行交互的时候调用.此时活动处于栈顶,并处于运行状态.

onPause():在系统准备去启动或恢复另一个活动的时候调用.通常在其中将一些消耗CPU的资源释放掉,例如广播收音者,传感器手柄(像GPS),或是任何可能影响电池寿命的资源。以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到栈顶活动的使用(即新页面无法入栈).

onStop():在活动完全不可见的时候调用.耗时的操作可以在这个方法执行

onRestart():处于"Stopped停止状态"的活动被重新显示时会自动执行本方法,之后再执行onStart(),onResume().使活动可见可交互。

onDestroy():在销毁之前自动调用.

常用执行顺序:

1.启动Activity: onCreate、onStart、onResume

2.失去焦点(完全挡住/压入栈底)onPause、onStop

3.锁屏:onPause、onStop

4.重新获取焦点:onRestart、onStart、onResume

5.解锁屏幕:onRestart、onStart、onResume

6.结束Activity:onPause、onStop、onDestroy


Activity启动模式:

1.任务栈:

任务和回退栈

任务:  用于保存当前Activity组件的实例(动作)

回退栈: Activity在内存中保存的数据结构就是会回退栈(管道)

Activity的启动模式表示进栈的方式不同最终效果也不相同:

2.四种启动模式

 1.standard:默认的方式

2.singleTop:

3.singleTask:

4.singleInstance:

一、standard:

 默认模式:拿来主义,每一次跳转都会创建一个新的实例。多个Activity启动的时候按照顺序依次执行进栈出栈的行为,哪怕是重复的Activity对象也会创建多个实例放入栈中。

按返回键的时候也会依次的销毁对象,比如:在Activity1跳转到Activity1的时候 也会创建两个Activity1实例放入栈中。

二、singleTop

  •  可以实例化多次,但是栈顶只能出现一个
  •  当栈顶不存在要启动的Activity实例,系统会创建一个新的Activity实例;
  •  当栈顶存在要启动动的Activity实例, 系统会调用onNewIntent(),把Intent对象传递给已经存在的Activity实例,重用栈顶的Activity
  •  onNewIntent() 该方法是Activity中的重写方法

三、singleTask

  •   只能创建一个Activity实例
  •   当栈中不存在要启动的Activity实例, 系统会创建一个Activity实例, 放在栈顶
  •   当栈中存在要启动的Activity实例, 会调用已经存在的Activity实例的onNewIntent()方法,
  • 把Intent对象传递给已经存在的Activity实例(并不会重新创建实例)
  • 并且不允许栈的上方出现其他的Activity实例, 他上方的Activity实例会pop栈中,并且销毁

四、singleInstance

  •      当使用这种模式启动Activity时,系统会单独分配一个Task,并把这个实例放到栈底.
  •      他不允许其他的Activity实例和他共享一个栈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值