android学习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2 Activity的启动模式
• 3.2.2 Activity的四种启动模式
– standard标准模式
• standard是Activity默认的启动模式,在不指定Activity启动模式的 情况下,所有Activity使用的都是standard模式。 • 在standard模式下,每当启动一个新的Activity,它就会进入任务栈 ,并处于栈顶的位置,对于使用standard模式的Activity,每次启动 都会创建一个新的实例。
生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期 中分为三种状态。 • 运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。 • 暂停状态:Activity对用户来说仍然是可见的,但它不再拥有焦点。 • 停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留 着当前状态和成员信息。然而这些对用户来说都是不可见的。
第3个进栈 第三个启动界面 第1个出栈
Activity03
第2个进栈 第二个启动界面 第2个出栈
Activity02
第1个进栈 第一个启动界面 第3个出栈
Activity01
3.2 Activity的启动模式
• 3.2.2 Activity的四种启动模式
– singleTop模式
• singleTop启动模式与standard类似,不同的是,当启动的Activity已 经位于栈顶时,则直接使用它,不再创建新的实例。
当再次启动的界面 位于栈顶,则复用 当再次启动的界面不位于 栈顶,则重新创建实例
Activity03
Activity04
第3个进栈 第三个启动界面
Activity03
第2个进栈 第二个启动界面
Activity02
第1个进栈 第一个启动界面
Activity01
3.2 Activity的启动模式
• 3.2.2 Activity的四种启动模式
在AndroidManifest.xml中,可以通过<activity>标签的 android:launchMode属性设置启动模式。
使用Intent中设置标志位来为Activity指定启动模式
二者区别:前者优先级低于后者,两种同时存在时,以第二种为准;第 一种方式无法直接为Activity设为FLAG_ACTIVITY_CLEAR_Βιβλιοθήκη BaiduOP标识,
3.1 Activity入门
提问: onStart和onResume、onPause和onStop从描述上来看差不多,对我 们来说有什么实质的不同吗? 假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的 onResume和A的onPause哪个先执行呢?
3.2 Activity的启动模式
• 3.2.2 Activity的四种启动模式
– Activity的Flags FLAG_ACTIVITY_NEW_TASK:指定SingleTask模式
FLAG_ACTIVITY_SINGLE_TOP:指定SingleTop模式
FLAG_ACTIVITY_CLEAR_TOP:类似于SingleTask模式 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:标记Activity不会出 现在历史Activity的列表中,当某些情况下不希望用户通过历史列表回到 Activity时候此标记比较有用,等同于XML中指定Activity的属性: android:excludeFromRecents="true"
3)在AndroidManifest.xml文件中注册Activity;
4)重写Activity的onCreate()方法,并在该方法中使用 setContentView()
加载指定的布局文件;
3.1 Activity入门
• 3.1.3 Activity的生命周期
– 生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的
目录
Activity入门
☞点击查看本小节知识架构
Activity的启动模式
☞点击查看本小节知识架构
在Activity中使用Intent
☞点击查看本小节知识架构
Activity中的数据传递
☞点击查看本小节知识架构
本章小节
3.1 Activity入门
• 3.1.1 Activity简介
什么是Activity?
3.1 Activity入门
• 异常情况下的生命周期
–当手机横竖屏切换时,Activity会销毁重建(模拟器中横竖屏切换可以使 用ctrl+F11)。 –当资源不足时,导致低优先级的Activity被杀死 –有时可能会出现某些数据没有及时保存的情况或Activity重建时原始界面中 数据仍存在,此时需要重写以下两个方法 : onSaveInstanceState(Bundle outState) onRestoreInstanceState(Bundle savedInstanceState)
第二种方式无法为Activity指定SingleInstance模式。
3.2 Activity的启动模式
• 3.2.2 Activity的四种启动模式
<activity android:name="com.example.activitydemo.SecondActivity" android:label="@string/app_name" android:launchMode="singleTask"> </activity>
3.1 Activity入门
• 3.1.3 Activity的生命周期
– Activity从一种状态转变到另一种状态时会触发一些事件,执行一些回 调方法来通知状态的变化,下面通过图例来展示。
可见时执行
创建时执行
回到前台,再 次可见时执行
获取焦点 时执行
失去焦点 时执行
用户不可见,进 入后台时执行
销毁时执行
3.2 Activity的启动模式
• 3.2.1 Android下的任务栈
从图可以看出,先加入任务栈中的Activity会处于容器下面,后加入的处 – Android系统中的任务栈,类似于一个容器,用于管理所有的 于容器上面,而从任务栈中取出Activity是从最顶端先取出,最后取出的 Activity实例。在存放Activity时,满足“先进后出(First-In/Last是最底端的Activity。 Out)”的原则。
3.1 Activity入门
• 3.1.1 Activity简介
– Activity是通过调用setContentView()方法来显示指定组件的。该方法 既可以接收View对象为参数,也可以接收布局文件对应的资源id为参数。 – Activity就像一个界面管理员,用户在界面上的操作是通过Activity来管 理的,下面列举几个Activity的常用事件。 • onKeyDown(int keyCode,KeyEvent event):对应按键按下事件 • onKeyUp(int keyCode,KeyEvent event):对应按键松开事件 • onTouchEvent(MotionEvent event):对应点击屏幕事件
Intent intent = new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
3.1 Activity入门
– 针对一个特定的Activity,第一次启动,回调方法是什么?
– 当用户打开新的Activity或者切换到桌面时,回调方法是什么? – 上题中如果新的Activity采用透明主题,当前Activity的回调方法是什么?
– 当用户再次回到原Activity时,回调方法是什么?
进栈 出栈
Top
Activity n
. . .
Base Activity1
3.2 Activity的启动模式
• 3.2.2 Activity的四种启动模式
– Activity的启动模式有四种,分别是standard、singleTop、singleTask 和singleInstance。
– 如何给Activity指定启动模式呢?
3.1 Activity入门
• 3.1.4 案例——Activity的存活
– 为了让初学者掌握Activity的生命周期,接下来通过Activity存活的案例 来演示两个Activity跳转时,生命周期方法变化的过程。
3.1 Activity入门
• 脚下留心:横竖屏切换时的生命周期
–当手机横竖屏切换时,Activity会销毁重建(模拟器中横竖屏切换可以使 用ctrl+F11)。 –如果不希望在横竖屏切换时Activity被销毁重建,可以在 AndroidManifest.xml文件中设置Activity的android:configChanges的属性 ,具体代码如下所示: • android:configChanges="orientation|keyboardHidden|screenSize― –如果希望某一个界面一直处于竖屏或者横屏状态,可以在清单文件中通过 设置Activity的属性来完成,具体代码如下所示: • 竖屏:android: screenOrientation="portrait" • 横屏:android: screenOrientation="landscape"
– singleTask模式
• 当Activity的启动模式为singleTask时,每次启动该Activity时,系 统首先会检查栈中是否存在该Activity的实例,如果发现已经存在 则直接使用该实例,并将当前Activity之上的所有Activity出栈,如 果没有发现则创建一个新的实例。
3.1 Activity入门
• 3.1.2 Activity的创建
– 在Android应用中,可以创建一个或多个Activity,创建步骤如下所示: 1)定义一个类继承自android.app.Activity或者其子类; 2)在res/layout目录中创建一个xml文件,用于创建Activity的布局;
3.1 Activity入门
• 3.1.1 Activity简介
– Activity是Android应用程序的四大组件之一,它负责管理Android应 用程序的用户界面。一个应用程序一般会包含若干个Activity,每一 个Activity组件负责一个用户界面的展现。
Activity展 示界面
Activity展 示界面
– 非透明主题时,当用户按back键回退时,回调方法是什么? – 当Activity被系统回收后再次打开,生命周期回调方法是什么?
3.1 Activity入门
– 从整个生命周期来说,onCreate和onDestroy是配对的,分别标识着 Activity的创建和销毁,并且只可能有一次调用; – 从Activity是否可见来说,onStart和onStop是配对的,随着用户的操作 或者设备屏幕的点亮和熄灭,这两个方法可以被调用多次; – 从Actitiy是否在前台来说,onResume和onPause是配对的,随着用户 操作或者设备屏幕的点亮和熄灭,这两个方法可能被调用多次。
3.1 Activity入门
• 多学一招:设置View的点击事件监听
– Android程序中,设置View的点击事件监听共有四种,分别是: 1)在布局文件中为控件设置onClick属性指定点击方法; 2)创建一个内部类实现OnClickListener接口并重写onClick()方法, 之后需要为控件设置setOnClickListener(Listener listener); 3)主类中实现OnclickListener接口,然后重写onClick()方法; 4)创建匿名内部类,即在为控件设置监听时直接创建一个 OnClickListener实例,不为该实例指定名称。
第三章 Activity
Activity生命周期 Activity的启动模式 显式意图和隐式意图 Activity中的数据传递
✎ 学习目标
Activity的生命周期
3
Activity简介
Activity中的数据传递
显式意图和隐式意图
1
掌握 Android中的任务栈 Activity的四种启动模式
2