Android的实战基础——入门组件Activity 活动

在此之前我们了解了一些简单的视图以及布局,那么下面我们就走进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 - Javaclass -起个名字并且继承Activity
  
然后在该类中重写 onCreate方法
   
res/layout/创建一个布局文件作为该Activity的绑定布局文件
   
在类的onCreate方法中添加方法setContentView(R.layout.布局id)
   
在清单文件中注册:manifest文件中
   
<application标签下面添加 <activity标签后添加属性name并将
   
该类的包名和类名添加进去即可

注意:Activity在创建后必须在清单文件Manifest文件中注册(四大组件在使用的时候都必须注册)

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

一个Activity有四种状态:

  1. 运行中(Running/Active):这时Activity位于栈顶,是可见的,并且可以用户交互。
  1. 暂停(Paused):当Activity失去焦点,不能跟用户交互了,但依然可见,就处于暂停状态。当一个新的非全屏的Activity或者一个透明的Activity放置在栈顶,Activity就处于暂停状态;这个时候Activity的各种数据还被保持着;只有在系统内存在极低的状态下,系统才会自动的去销毁Activity。
  1. 停止(Stoped):当一个Activity被另一个Activity完全覆盖,或者点击HOME键退入了后台,这时候Activity处于停止状态。这里有些是跟暂停状态相似的:这个时候Activity的各种数据还被保持着;当系统的别的地方需要用到内容时,系统会自动的去销毁Activity。
  1. 销毁(Detroyed):当我们点击返回键或者系统在内存不够用的情况下就会把Activity从栈里移除销毁,被系统回收,这时候,Activity处于销毁状态。

Activity的生命周

从开始到束表示程的方法


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

onCreate():

当Activity第一次被创建时调用。是生命周期开始的第一个方法。在这里  我们可以做一些初始化的操作,比如:调用setContentView()方法去加载界  面,绑定布局里的一些控件,初始化一些Activity需要用到的数据。之后   会调用onStart方法.

onStart():

当Activity正在变为可见时调用。这个时候Activity已经可见了,但是还 没有出现在前台还不能跟用户交互。可以简单理解为Actvity已经可见但是 还没有出现在前台。之后会调用onResume

onResume():

当Activity可以跟用户交互时调用,这个时候,这个Activity位于栈的顶 部。跟onStart相比,它们都是表示Activity已经可见,但是onStart调用  时Activity还在后台,而调用onResume时,Activity已经进入了前台,可  以跟用户交互了。之后会调用 onPause.

onPause():

当Activity暂停时调用这个方法;在这里我们可以用来保存数据,关闭动  画和其它比较耗费CPU的操作;但是在这里做的操作绝对不能耗时,因为如  果当前Activity要启动一个新的Activity,这个新的Activity会在当前A  ctivity执行完毕onPause之后才能进入可见状态。

onStop():

这个方法是在Activity处于停止状态后,又回到可视状态时调用。之后会  调用onResume

onDestroy():

这个方法是Activity生命周期中调用的最后一个方法。它会在Activity被 销毁之前调用;Activity销毁原因一般是我们调用Activity的finish方法  手动销毁,另一个就是系统在内存紧张的情况下去销毁Activity,以用来节  省空间。我们可以通过方法 isFinishing 来判断Activity是否正在被销毁

正常情况下Activity的生命周期是:
onCreate->onStart->onResume->onPause->onStop->onDestroy

  1. 对于一个正常的Activity,第一次启动,会依次回调以下方法:
    onCreate->onStart->onResume
  1. 当我们打开一个新的Activity或者点击Home键回到桌面后,会依次回调以下方法:
    onPause->onStop。
    如果新的Activity是透明的(采用的透明主题),当前的Activity不会回调onStop.
  1. 当我们再次回到原Activity,会依次回调以下方法:
    onRestart->onStart->onResume.
  1. 当我们点击返回键后,会依次回调以下方法:
    onPause->onStop->onDestroy.
  1. 当Activity被系统回收后,再次被打开,会跟第一次启动的时回调生命周期方法一样
  1. 我们可以注意到 其中onCreate 跟 onDestroy 是相对的。一个创建一个         销毁。并且其只可能被调用一次。按照这种配对方式,我们也可以         看出 onStart跟onStop 是配对的,一个可见一个不可见.这两个方             法可以被多次调用.  尚onResume 和 onPause 也是配对的,它们        一个获取焦点和用户交互,一个正好相反
  1. onStart和onResume,onPause和onStop,这两对方法在功描述差不多,         那为什么还要重复存在呢?
             其实这两对方法分别代表不同的意义,onStart和onStop 是Activity        是否可见的标志,而onResume和onPause是从Activity是否位于前             台的标志,它们针对的角度不同。
  1. 在onPause里不能做耗时操作,因为如果要启动一个新的Activity,新的         Activity必须要在前一个Activity的onPause 方法执行完毕之后才会            启动的新的Activity。

常用序:

1.Activity: onCreateonStartonResume

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

3.锁屏:onPause、onStop

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

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

6.结束ActivityonPauseonStoponDestroy

Activity模式:

1.务栈

和回退

:  后出

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

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

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

2.四种启模式

 1.standard:默的方式

2.singleTop

3.singleTask

4.singleInstance

一、standard

 模式:拿来主,每一次跳都会建一个新的例。多个Activity候按照序依次进栈的行,哪怕是重复的Activity对象也会创建多个实例放入栈中

按返回候也会依次的销毁对象,比如:在Activity1Activity1

 也会建两个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添加标签

  <activityandroid:launchMode= ""/>

  参数就是

 1.standard:默的方式

2.singleTop

3.singleTask

4.singleInstance

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.layout);
  Log.i("hh","onCreate");
}
@Override
protected void onStart() {
  super.onStart();
  Log.i("hh","onStart");
}

@Override
protected void onResume() {
  super.onResume();
  Log.i("hh","onResume");
}

@Override
protected void onPause() {
  super.onPause();
  Log.i("hh","onPause");
}

@Override
protected void onStop() {
  super.onStop();
  Log.i("hh","onStop");
}

@Override
protected void onDestroy() {
  super.onDestroy();
  Log.i("hh","onDestroy");
}
写完后按上面的方式一次执行一遍就会对这个Activity的生命周期有一个突破性的认识!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值