Android第五天 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的页面是启动页面


页面之间的切换:
 Intent
类:   Intent意图  连接四大组件的枢纽 用于启动四大组件 传递数据等等操作
 实例化对象:
 
参数一:表示当前的上下文对象
 
参数二: 表示目标Activity的类对象 SecondActivity.class
  Intent
 intent= new Intent(this,Activity.class);
 
开启跳转: 参数 intent
  startActivity
(intent);

 

 结束掉当前的页面
 1.
在当前的页面调用finish()方法
 2.
点击Android手机的物理返回键


Activity的生命周期

活动从开始到结束表示过程的方法

 

一共7个回调方法(不需要主动调用):




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销毁了但是 onDestroy方法没有执行:

  在应用程序里按下手机的Home键,然后按下任务栏,在手机任务栏里直接清空任务的时候 Activity会被销毁但是没有执行onDestory方法



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.在清单文件中Manifest中注册Activity的时候 添加标签:
   <activity android:launchMode= ""/>
  参数就是

 1.standard:默认的方式

2.singleTop:

3.singleTask:

4.singleInstance:


2.在Java 代码中设置:
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);   
Intent.FLAG_ACTIVITY_SINGLE_TOP   等同于singleTop
Intent.FLAG_ACTIVITY_CLEAR_TOP    
同singleTask相似,当栈中不存在创建; 如果存在把自己和上方的所有Activity实例移除栈中,并且销毁, 创建一个新的实例,放在栈顶
Intent.FLAG_ACTIVITY_NEW_TASK
必须要在Activity注册时加上属性
 android:taskAffinity="com.other"
         android:alwaysRetainTaskState="true"
 只有设置了这两个属性,系统才会为当前的实例创建新的任务,并且放到栈的底部,否则等同于没有设置




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值