Activity的生命周期

合集下载

android测试题及答案

android测试题及答案

android测试题及答案1. Android系统中,Activity的生命周期包含哪些状态?- A. onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()- B. onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart()- C. onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart(), onDestroy()- D. onCreate(), onRestart(), onStart(), onResume(), onPause(), onStop(), onDestroy()答案:C2. 在Android开发中,如何实现Activity之间的数据传递?- A. 使用Intent对象- B. 使用SharedPreferences- C. 使用数据库- D. 使用文件存储答案:A3. Android中,Service和Activity有什么区别?- A. Service没有用户界面,而Activity有- B. Activity没有用户界面,而Service有- C. Service和Activity都没有用户界面- D. Service和Activity都有用户界面答案:A4. Android中,如何实现屏幕旋转时Activity数据的保存和恢复? - A. 重写onSaveInstanceState()和onRestoreInstanceState()方法- B. 重写onPause()和onResume()方法- C. 重写onCreate()和onDestroy()方法- D. 重写onStart()和onStop()方法答案:A5. 在Android中,如何监听屏幕的亮灭状态?- A. 使用SensorManager监听光线传感器- B. 使用PowerManager监听电源状态- C. 使用BroadcastReceiver监听ACTION_SCREEN_OFF和ACTION_SCREEN_ON广播- D. 使用Handler定时检测电源状态答案:C6. Android中,如何实现应用的多语言支持?- A. 在res目录下创建不同语言的资源文件,并在代码中动态加载- B. 使用SharedPreferences存储用户选择的语言,并在代码中动态加载- C. 在代码中硬编码不同语言的字符串- D. 使用第三方库自动翻译应用内容答案:A7. 在Android开发中,如何实现应用的后台运行?- A. 使用Service- B. 使用BroadcastReceiver- C. 使用ContentProvider- D. 使用IntentService答案:A8. Android中,如何实现应用的权限请求?- A. 在AndroidManifest.xml中声明权限- B. 在代码中动态请求权限- C. 同时使用A和B- D. 无需请求权限答案:C9. Android中,如何实现应用的横竖屏切换?- A. 在AndroidManifest.xml中设置Activity的android:screenOrientation属性- B. 在代码中动态设置Activity的requestedOrientation属性 - C. 使用SensorManager监听屏幕旋转事件- D. 使用Handler定时检测屏幕旋转状态答案:A10. 在Android开发中,如何实现应用的内存优化?- A. 避免内存泄漏- B. 减少Bitmap的使用- C. 使用对象池- D. 以上都是答案:D结束语:以上是Android测试题及答案,希望对您的学习和工作有所帮助。

Activity的生命周期

Activity的生命周期

Activity生命周期 Activity生命周期
Activity是Android中一个非常重要的一个组件。那么 是 中一个非常重要的一个组件。 中一个非常重要的一个组件 Activity这个类在 这个类在Android中究竟扮演什么角色,该类中究竟定义 中究竟扮演什么角色, 这个类在 中究竟扮演什么角色 了什么方法,这些方法都有什么功用呢? 了什么方法,这些方法都有什么功用呢? 另外,一个 类似于一个窗口, 另外,一个Activity类似于一个窗口,当有另一个窗口启动 类似于一个窗口 时候,会把原来的Activity覆盖掉,那么原来的 覆盖掉, 时候,会把原来的 覆盖掉 那么原来的Activity处于什么 处于什么 状态呢?在本章我们就会一起探讨Activity的作用以及 的作用以及Activity的 状态呢?在本章我们就会一起探讨 的作用以及 的 方法以及Activity的生命周期。 的生命周期。 方法以及 的生命周期
案例演示
本章目标
• • • •
什么是Activity 什么是Activity Activity的生命周期 Activity的生命周期 事件处理方式 Android键盘事件和触摸事件 Android键盘事件和触摸事件
预习检查
提问
• 表示Activity生命周期的方法有哪几个 表示Activity生命周期的方法有哪几个
事件编码处理方式
• 四种编码方式
public class MainActivity extends Activity implements btn1.setOnClickListener(btnList1); <Button android:text="Button01" android:id="@+id/Button01" OnClickListener { Button btn1=(Button)findViewById(R.id.Button03); private OnClickListener btnList1=new android:layout_width="wrap_content" OnClickListener() { @Override //进行事件处理 @Override 进行事件处理 android:layout_height="wrap_content" public void onCreate(Bundle btn1.setOnClickListener(new savedInstanceState) public void onClick(View v) { OnClickListener() { { android:onClick=”btn1Click”></Button> //dosomething ….. ..... @Override Button btn1Click(View { } public void onClick(View v)view){ public void btn1=(Button)findViewById(R.id.Button01); ( ) //进行事件处理 //do something }; …… 进行事件处理 btn1.setOnClickListener(this); } } } }); @Override public void onClick(View v) { switch(v.getId()){ case R.id.Button01: //dosomething break; ......

Activity的生命周期

Activity的生命周期

Activity的生命周期好好理解Activity的生命周期是非常重要的。

可以确保你的应用程序给用户提供一个完美的用户体验并适当的管理资源。

和前面介绍Application一样,Application不能自己控制自己的进程生命周期,Android系统运行时会管理每一个应用程序的进程,包括在应用程序里面的所有Activity。

当运行时需要终止并管理一个Activity的进程,这个Activity的状态会决定它所在的父应用程序的优先级。

接着,应用程序的优先级也会影响运行时,可能会终止该应用程序。

Activity 栈每一个Activity的状态会决定它在Activity栈中的位置,按照先进后出的方式组织现在所运行的所有的Activity,当一个新Activity启动时,当前位于前台的屏幕的将会移动到栈顶,如果用户点击了退后按钮,或者这个前台的Activity关闭了,栈中的下一个Activity会移动上来,并且处于活动状态,下图说明了这个过程:根据前面的说明,应用程序的优先级取决于它包含的最高优先级的Activity,当Android的内存管理决定终止哪一个Application以释放资源,也是使用这个栈决定建立在这些Activity上面的应用程序的优先级。

Activity 状态一个Activity从建立到销毁也就是移入到移出栈,这个过程通常可能包含以下四个状态:1、Active 获得状态,当一个Activity位于栈顶并显示在前台,等待获得用户输入命令,Android系统会尝试付出所有可能的资源保证它的运行,必要时会杀死一些在栈中位于比较靠后的一些Activity,以确保它需要的资源,当另外一个Activity变成Active状态,那么这个将会进入暂停状态。

2、Paused 暂停状态,有些情况下,你的应用程序会可见,但是不是获得用户输入的焦点,这种情况就是进入了暂停状态,出现这种状态也是是有一个半透明的或者不是全屏的Activity在它前面处于获得状态,当进入暂停状态,它会和处于获得状态一样对待,只是它不能获得用户的输入而已。

Activity详细讲解

Activity详细讲解

Activity详细讲解Activity 是我们开发Android应⽤程序最重要的⼀个类。

这个类的内容⽐较多,我理解多少就写多少,希望你喜欢:)这篇⽂章会涉及到以下⼏个内容⼀ Activity的⽣命周期⼆ 让Activity变成⼀个窗⼝:Activity属性设定三 你后台的Activity被系统回收怎么办:onSaveInstanceState四 调⽤与被调⽤:我们的通信使者 - Intent⼀ Activity的⽣命周期和其他⼿机平台的应⽤程序⼀样,Android的应⽤程序的⽣命周期是被统⼀掌控 的,也就是说我们写的应⽤程序命运掌握在别⼈(系统)的⼿⾥,我们不能改变它,只能学习并适应它。

简单地说⼀下为什么是这样:我们⼿机在运⾏⼀个应⽤程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占⽤太多资源,⾄少要保证电话功能吧,所以资源不⾜的时候也就有可能被⼲掉。

⾔归正传,Activity的基本⽣命周期如下代码所⽰:Java代码1. publicclass MyActivity extends Activity{2. protectedvoid onCreate(BundlesavedInstanceState);3.4. protectedvoid onStart();5.6. protectedvoid onResume();7.8. protectedvoid onPause();9.10. protectedvoid onStop();11.12. protectedvoid onDestroy();13. }public class MyActivity extends Activity {protected void onCreate(Bundle savedInstanceState);protected void onStart();protected void onResume();protected void onPause();protected void onStop();protected void onDestroy();}你⾃⼰写的Activity会按需要 重载这些⽅法,onCreate是免不了的,在⼀个Activity正常启动的过程中,他们被调⽤的顺序是 onCreate -> onStart -> onResume, 在Activity被⼲掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是⼀个完整的⽣命周期,但是有⼈问了 ,程序正运⾏着呢来电话了,这个程序咋办?中⽌了呗,如果中⽌的时候新出的⼀个Activity是全屏的那么:onPause->onStop ,恢复的时候onStart->onResume ,如果打断 这个应⽤程序的是⼀个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复 的时候onResume 。

2023年职场_android面试题及答案

2023年职场_android面试题及答案

2023年android面试题及答案2023年android面试题及答案篇一1. 横竖屏切换时候 activity 的生命周期1). 不设置 Activity 的 android:configChanges 时 , 切屏会重新调用各个生命周期 , 切横屏时会执行一次 , 切竖屏时会执行两次 .2). 设置 Activity 的 Android:configChanges=‖orientation‖时 , 切屏还是会重新调用各个生命周期 , 切横、竖屏时只会执行一次 .3). 设置 Activity 的 Android:configChanges=‖orientation|keyboardHidden‖时 , 切屏不会重新调用各个生命周期 , 只会执行 onConfigurationChanged 方法 .2.android 中的动画有哪几类,它们的特点和区别是什么 ?两种,一种是 Tween 动画、还有一种是 Frame 动画。

Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化 ; 另一种Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

3. 一条最长的短信息约占多少 byte?中文70( 包括标点) ,英文160 ,160 个字节。

4.handler 机制的原理andriod 提供了 Handler 和 Looper 来满足线程间的通信。

Handler 先进先出原则。

Looper 类用来管理特定线程内对象之间的消息交换 (Message Exchange) 。

1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的Message Queue( 消息队列 ) 。

2)Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里; 或者接收 Looper 从 Message Queue 取出 ) 所送来的消息。

Activity

Activity

Activity 生命周期及其栈管理方式Activity 生命周期Android 系统用栈的形式管理Activity ,当新的Activity 被创建是,会被放置到栈顶,这个Activity 会进入到运行状态,而前一个Activity 则会被压入栈,直到新的Activity 退出,否则不会出现在前台。

单个Activity 的生命周期状态以及生命周期方法根据Android 文档,每一个Activity 都有四个状态,它们分别是:∙当Activity 位于屏幕的最前面(栈顶),称之为运行(活动)状态:;∙当Activity 失去焦点,但是依旧可见,比如被非全屏的对话框遮住部分,称之为暂停状态,暂停的Activity 依然是活动的,但是当系统内存严重不足时,有可能被系统结束;∙当Activity 完全不可见时,称之为停止状态,这时Activity 依然保持其状态以及成员信息,不过由于此时Activity 对用户不可见,当系统其它地方需要内存时,经常会被结束;∙当Activity 由不可见变成可见时,称之为重启状态,这时Activity 必须迅速恢复它以前的状态。

下图表示Activity 在这四种状态之间切换的生命周期,以及状态切换时调用的对应的方法:Activity 生命周期中的各个方法描述如下:∙onCreate()当Activity 首次创建时调用,这里通常的工作是创建视图,绑定数据到列表等。

这个方法还有一个Bundle 参数,如果这个Activity 之前由冻结的状态,这个状态将包含在里面。

之后,通常会接着调用onStart() 方法。

∙onRestart() Activity 已经被停止,在其被重新开始之前调用。

接下来回调用onStart() 方法。

∙onStart()当Activity 变到用户可见时调用,接下来如果Activity 变成不可见的话,将会调用onStop() ,否则将调用onResume() 。

Activity的生命周期

Activity的生命周期
的最前端,那么这是的activity处于执行状态的
执行状态---->暂停状态:
当一个activity实例处于暂停状态的时候,这时候会触发onPause()状态
暂停状态---->执行状态:
这时候会触发onResume()
执行状态---->停止状态:
当一个新的activity打开之后会覆盖掉原来的activity,这时原来的activity处于停止状体,这是会调用onPause()和onStop()方法
声明:这两个方法只会在activity对象被系统自动回收的情况下才会调用,但是如果是按BACK键将一个Activity对象销毁系统是不会调用
这两个方法的。
方法之前】。他会将以名称-值对方式记录了activity动作状态的Bundle对象传递给onSaveInstanceState()方法。当activity再次启动
时,这个Bundle会传递给onCreate()方法和随着onSart()方法调用的onRestoreInstanceState(),所以他们两个都可以恢复捕获的状态。
对于onSaveInstanceState()和onRestoreInstanceState()方法知识的补充:
当系统而不是用户自己出于回收内存的考虑,关闭了一个activity之后。用户会期望当他再次回到那个activity的时候,它仍保持着
上次离开时的样子。为了获取activity被杀死前的状态,那么应该在android系统回收activity被回收之前调用该方法【最好是在onPause
void onStart()
void onRestart()
void onResume()
void onPause()

activity从启动到关闭不会执行的方法

activity从启动到关闭不会执行的方法

activity从启动到关闭不会执行的方法标题:深度探讨:activity从启动到关闭不会执行的方法在Android开发中,activity是十分重要的一个组件,它负责用户界面的展示和交互。

在应用程序的生命周期中,activity的启动和关闭涉及到了许多方法的调用与执行。

本文将深入探讨activity从启动到关闭不会执行的方法,并对其进行全面评估。

1. 生命周期回顾在深入研究activity从启动到关闭不会执行的方法之前,首先需要介绍一下activity的生命周期。

Android系统会根据用户的操作和系统的内存情况来管理activity的生命周期,主要包括以下几个状态:创建(onCreate)、启动(onStart)、恢复(onResume)、暂停(onPause)、停止(onStop)和销毁(onDestroy)。

在每个状态的切换过程中,都会触发相应的方法的执行,而在activity从启动到关闭的过程中,有一些方法是不会被执行的。

2. 不会执行的方法接下来,我们来具体分析一下activity从启动到关闭不会执行的方法。

- onRestart方法当activity由停止状态重新启动时,系统会调用onRestart方法,但是在activity的整个生命周期中,onRestart方法不会在其他情况下被执行。

- onRestoreInstanceState方法在activity被系统销毁重建时,系统会调用onRestoreInstanceState方法来恢复之前保存的状态,但是在正常的启动和关闭过程中,onRestoreInstanceState方法不会被执行。

- onSaveInstanceState方法与onRestoreInstanceState相对应的是onSaveInstanceState方法,它用于保存activity的状态数据,在正常的启动和关闭过程中,onSaveInstanceState方法也不会被执行。

android面试题及答案

android面试题及答案

android面试题及答案一、Activity 生命周期相关1. 请简述Activity的生命周期,并解释每个状态的含义。

- Activity生命周期主要包括 onCreate(), onStart(), onResume(), onPause(), onStop(), 和 onDestroy() 方法。

onCreate() 在Activity第一次创建时调用,用于初始化界面和数据。

onStart() 当Activity对用户可见时调用,表示Activity已经部分准备好与用户交互。

onResume() 当Activity准备与用户交互时调用,此时Activity处于前台。

onPause() 当Activity失去焦点,但未完全退出时调用,用于保存数据和清理资源。

onStop() 当Activity完全不再显示在屏幕上时调用,释放资源。

onDestroy() 当Activity被系统销毁时调用,用于做最后的清理工作。

2. Activity A跳转到Activity B,再按返回键,生命周期如何调用? - 当从Activity A跳转到Activity B时,Activity A的onPause()会被调用,然后是onStop(),而Activity B会依次调用onCreate(),onStart(),onResume()。

按返回键从Activity B返回到Activity A时,Activity B会依次调用onPause()和onStop(),Activity A则会依次调用onRestart(), onStart()和onResume()。

二、Intent 相关1. 请解释Intent的基本作用及其使用场景。

- Intent是Android中用于组件间通信的一种机制,它可以用于启动Activity,Service,发送广播等。

常见的使用场景包括从一个Activity启动另一个Activity,或者向Service发送数据。

简述Activity生命周期

简述Activity生命周期

简述Activity⽣命周期copy from :基于Android 6.0的源码剖析,分析android Activity启动流程中ActivityManagerService所扮演的⾓⾊⼀、概述上⼀篇⽂章,介绍了startActivity是如何⼀步步创建的,再来看看⽣命周期的控制。

先来⼀张官⽅的Activity状态转换图:Activity的⽣命周期中只有在以下3种状态之⼀,才能较长时间内保持状态不变。

Resumed(运⾏状态):Activity处于前台,且⽤户可以与其交互。

Paused(暂停状态): Activity被在前台中处于半透明状态或者未覆盖全屏的其他Activity部分遮挡。

暂停的Activity不会接收⽤户输⼊,也⽆法执⾏任何代码。

Stopped(停⽌状态):Activity被完全隐藏,且对⽤户不可见;被视为后台Activity。

停⽌的Activity实例及其诸如成员变量等所有状态信息将保留,但它⽆法执⾏任何代码。

除此之外,其他状态都是过渡状态(或称为暂时状态),⽐如onCreate(),onStart()后很快就会调⽤onResume()⽅法。

⼆. ⽣命周期2.1 进程间通信对于App来说,其Activity的⽣命周期执⾏是与系统进程中的ActivityManagerService有⼀定关系的,接下来从进程和线程的⾓度来分析Activity的⽣命周期,这⾥涉及到系统进程和应⽤进程:system_server进程是系统进程,Java framework框架的核⼼载体,⾥⾯运⾏了⼤量的系统服务,⽐如这⾥提供ApplicationThreadProxy(简称ATP),ActivityManagerService(简称AMS),这个两个服务都运⾏在system_server进程的不同线程中,由于ATP和AMS都是基于IBinder接⼝,都是binder线程,binder线程的创建与销毁都是由binder驱动来决定的。

Android之FrameWork的面试题

Android之FrameWork的面试题

Android之FrameWork的⾯试题1 Activity的⽣命周期和启动模式1.1 Activity的⽣命周期全⾯分析⽤户正常使⽤情况下的⽣命周期 & 由于Activity被系统回收或者设备配置改变导致Activity被销毁重建情况下的⽣命周期。

1.1.1 典型情况下的⽣命周期分析Activity的⽣命周期和启动模式1. Activity第⼀次启动:onCreate->onStart->onResume。

2. Activity切换到后台(⽤户打开新的Activity或者切换到桌⾯),onPause->onStop(如果新Activity采⽤了透明主题,则当前Activity不会回调onstop)。

3. Activity从后台到前台,重新可见,onRestart->onStart->onResume。

4. ⽤户退出Activity,onPause->onStop->onDestroy。

5. onStart开始到onStop之前,Activity可见。

onResume到onPause之前,Activity可以接受⽤户交互。

6. 在新Activity启动之前,栈顶的Activity需要先onPause后,新Activity才能启动。

所以不能在onPause执⾏耗时操作。

7. onstop中也不可以太耗时,资源回收和释放可以放在onDestroy中。

1.1.2 异常情况下的⽣命周期分析1 系统配置变化导致Activity销毁重建例如Activity处于竖屏状态,如果突然旋转屏幕,由于系统配置发⽣了改变,Activity就会被销毁并重新创建。

在异常情况下系统会在onStop之前调⽤onSaveInstanceState来保存状态。

Activity重新创建后,会在onStart之后调⽤onRestoreInstanceState来恢复之前保存的数据。

保存数据的流程: Activity被意外终⽌,调⽤onSaveIntanceState保存数据-> Activity委托Window,Window委托它上⾯的顶级容器⼀个ViewGroup(可能是DecorView)。

Activity使用详解

Activity使用详解

Activity使⽤详解极⼒推荐⽂章:欢迎收藏本篇⽂章主要介绍Android开发中的部分知识点,通过阅读本篇⽂章,您将收获以下内容:1. Activity ⽣命周期简介2. Activity 必须在AndroidMainfest.xml 中注册3. 启动Activity 的⽅法4. 启动带返回值的Activity5. Activity结束⽅法6. Activity状态保存,恢复的⽅法7. ⾯试中经常问到的例⼦Activity是Android最基本的四⼤组件之⼀(Activity活动,Service服务,ContentProvider内容提供者,BroadcastReceiver⼴播),Activity主要负责与⽤户进⾏交互,是每位Android开发必须掌握的知识点。

1. Activity ⽣命周期简介⾸先我们需要了解⼀下Activity的继承关系。

Activity 继承关系Activity继承关系如下:ng.Object↳ android.content.Context↳ android.content.ContextWrapper↳ android.view.ContextThemeWrapper↳ android.app.Activity理解完Activity的继承关系后,我们开始了解Activity的声明周期,Activity的⽣命周期直接影响到与⽤户的交互,此声明周期很重要。

Activity ⽣命周期Activity⽣命周期图如下:Activity ⽣命周期图在代码中Activity⽣命周期回调⽅法Activity⽣命周期回调⽅法如下:// Activity 创建⽅法@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i(TAG, "----onCreate----");setContentView(yout.activity_methods);}// Activity 在最新任务列表中打开时候会⾛此⽅法@Overrideprotected void onRestart() {super.onRestart();Log.i(TAG, "----onRestart----");}// Activity 在onCreate 或者 onRestart之后执⾏@Overrideprotected void onStart() {super.onStart();Log.i(TAG, "----onStart----");}// 正在与⽤户交互的界⾯@Overrideprotected void onResume() {super.onResume();Log.i(TAG, "----onResume----");}// 被其他与⽤户交互的Activity 部分覆盖@Overrideprotected void onPause() {super.onPause();Log.i(TAG, "----onPause----");}// 被其它与⽤户交互的Activity 全部覆盖@Overrideprotected void onStop() {super.onStop();Log.i(TAG, "----onStop----");}// Activity 销毁时候调⽤此⽅法@Overrideprotected void onDestroy() {super.onDestroy();Log.i(TAG, "----onDestroy----");}Activity 4 种Activity常见的四种⽣命周期状态如下:1. Active 运⾏状态2. Pause 暂停状态3. Stop 停⽌状态4. Killed 消亡状态2. Activity 必须在 AndroidMainfest.xml 中注册Activity是四⼤组件之⼀,Android规定四⼤组件必须在AndroidMainfest.xml中注册,Activity如果不注册,则会引起App Crash报错。

Activity 详解 Activity文档翻译-11页精选文档

Activity 详解  Activity文档翻译-11页精选文档

Activity 详解 Activity文档翻译转自:展现在用户面前的经常是全屏窗口,你也可以将activity 作为浮动窗口来使用(使用设置了windowIsFloating的主题),或者嵌入到其他的activity(使用ActivityGroup)中。

当用户离开activity时你可以在onPause()进行相应的操作。

更重要的是,用户做的任何改变都应该在该点上提交(经常提交到ContentProvide r这里保存数据)。

1.Activity生命周期系统中的Activity可以通过一个activity栈来进行管理。

当一个新的activity启动的时候,它首先会被放置在activity栈顶部并成为running状态的activity--之前的activity也在activity栈中,但总是被保存在它的下边,只有当这个新的activity退出以后之前的activity才能重新回到前景界面。

所有的activity本质上有四种状态:activity在屏幕的前景中(activity栈的顶端),它是active或者running状态。

activity失去了焦点但是仍然可见(这个activity顶上遮挡了一个透明的或者非全屏的activity),它的状态是paused。

一个paused状态的activity完全是alive的(它维护自己所有的状态和成员信息,而且仍然在window manager的管理中),但当系统内存极度贫乏时也会将其killed。

activity由于其他的activity而完全变暗,它就进入了stopped 状态。

它仍然保持着所有的状态和成员的信息,可是,他对于用户来说不可见,当别的地方需要内存的时候它经常会被killed。

activity是paused或者stopped,系统需要将其清理出内存的时可以命令其finish或者简单kill其进程。

当它重新在用户面前显示的时候,它必须完全重新启动并且将其关闭之前的状态全部恢复回来。

面试准备(二)绘制Activity的生命流程图

面试准备(二)绘制Activity的生命流程图

⾯试准备(⼆)绘制Activity的⽣命流程图我们来看⼀下这⼀张经典的⽣命周期流程图:相信不少朋友也已经看过这个流程图了,也基本了解了Activity⽣命周期的⼏个过程,我们就来说⼀说这⼏个过程。

1.启动Activity:系统会先调⽤onCreate⽅法,然后调⽤onStart⽅法,最后调⽤onResume,Activity进⼊运⾏状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调⽤onPause⽅法,暂停当前Activity的执⾏。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调⽤onResume⽅法,再次进⼊运⾏状态。

4.当前Activity转到新的Activity界⾯或按Home键回到主屏,⾃⾝退居后台:系统会先调⽤onPause⽅法,然后调⽤onStop⽅法,进⼊停滞状态。

5.⽤户后退回到此Activity:系统会先调⽤onRestart⽅法,然后调⽤onStart⽅法,最后调⽤onResume⽅法,再次进⼊运⾏状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不⾜,杀死当前Activity,⽽后⽤户退回当前Activity:再次调⽤onCreate⽅法、onStart⽅法、onResume⽅法,进⼊运⾏状态。

7.⽤户退出当前Activity:系统先调⽤onPause⽅法,然后调⽤onStop⽅法,最后调⽤onDestory⽅法,结束当前Activity。

但是知道这些还不够,我们必须亲⾃试验⼀下才能深刻体会,融会贯通。

下⾯我们就结合实例,来演⽰⼀下⽣命周期的⼏个过程的详细情况。

我们新建⼀个名为lifecycle的项⽬,创建⼀个名为LifeCycleActivity的Activity,如下:public class LifeCycleActivity extends Activity {private static final String TAG = "LifeCycleActivity";private Context context = this;private int param = 1;//Activity创建时被调⽤@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i(TAG, "onCreate called.");setContentView(yout.lifecycle);Button btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(context, TargetActivity.class);startActivity(intent);}});}//Activity创建或者从后台重新回到前台时被调⽤@Overrideprotected void onStart() {super.onStart();Log.i(TAG, "onStart called.");}//Activity从后台重新回到前台时被调⽤@Overrideprotected void onRestart() {super.onRestart();Log.i(TAG, "onRestart called.");}//Activity创建或者从被覆盖、后台重新回到前台时被调⽤@Overrideprotected void onResume() {super.onResume();Log.i(TAG, "onResume called.");}//Activity窗⼝获得或失去焦点时被调⽤,在onResume之后或onPause之后/*@Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);Log.i(TAG, "onWindowFocusChanged called.");}*///Activity被覆盖到下⾯或者锁屏时被调⽤@Overrideprotected void onPause() {super.onPause();Log.i(TAG, "onPause called.");//有可能在执⾏完onPause或onStop后,系统资源紧张将Activity杀死,所以有必要在此保存持久数据}//退出当前Activity或者跳转到新Activity时被调⽤@Overrideprotected void onStop() {super.onStop();Log.i(TAG, "onStop called.");}//退出当前Activity时被调⽤,调⽤之后Activity就结束了@Overrideprotected void onDestroy() {super.onDestroy();Log.i(TAG, "onDestory called.");}/*** Activity被系统杀死时被调⽤.* 例如:屏幕⽅向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死.* 另外,当跳转到其他Activity或者按Home键回到主屏时该⽅法也会被调⽤,系统是为了保存当前View组件的状态.* 在onPause之前被调⽤.*/@Overrideprotected void onSaveInstanceState(Bundle outState) {outState.putInt("param", param);Log.i(TAG, "onSaveInstanceState called. put param: " + param);super.onSaveInstanceState(outState);}/*** Activity被系统杀死后再重建时被调⽤.* 例如:屏幕⽅向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,⽤户⼜启动该Activity.* 这两种情况下onRestoreInstanceState都会被调⽤,在onStart之后.*/@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {param = savedInstanceState.getInt("param");Log.i(TAG, "onRestoreInstanceState called. get param: " + param);super.onRestoreInstanceState(savedInstanceState);}}⼤家注意到,除了⼏个常见的⽅法外,我们还添加了onWindowFocusChanged、onSaveInstanceState、onRestoreInstanceState⽅法:1.onWindowFocusChanged⽅法:在Activity窗⼝获得或失去焦点时被调⽤,例如创建时⾸次呈现在⽤户⾯前;当前Activity被其他Activity覆盖;当前Activity转到其他Activity或按Home键回到主屏,⾃⾝退居后台;⽤户退出当前Activity。

Android学习总结(一)——Activity的基本概念与Activity的生命周期

Android学习总结(一)——Activity的基本概念与Activity的生命周期

Android学习总结(⼀)——Activity的基本概念与Activity的⽣命周期⼀、Activity的基本概念 Activity是Android的四⼤组件之⼀,它是⼀种可以包含⽤户界⾯的组件,主要⽤于和⽤户进⾏交互,⽐如打电话,照相,发送邮件,或者显⽰⼀个地图!Activity⽤于显⽰⽤户界⾯,⽤户通过Activity交互完成相关操作,⼀个App允许有多个Activity。

⼆、Activity的⽣命周期 Activity⽣命周期是每⼀个Android开发者都必须掌握的,当我们深⼊理解活动的⽣命周期之后,就可以写出更加连贯流畅的程序,让我们的程序拥有更好的⽤户体验2.1、Activity的⽣命周期图2.2、Activity的四种状态 每个Activity在其⽣命周期中最多可能会有四种状态。

1.运⾏状态 当⼀个Activity位于返回栈(关于返回栈的概念下⾯再介绍)的栈顶时,这时Activity就处于运⾏状态,系统会将处于栈顶的Activity显⽰给⽤户。

2.暂停状态 当⼀个Activity不再处于栈顶位置,但仍然可见,这时Activity就进⼊了暂停状态。

初学者可能会有这样的疑问,既然Activity都已经不在栈顶了,怎么会还可见呢,这是因为并不是每⼀个Activity都会占满整个屏幕的,⽐如对话框形式的Activity只会占⽤屏幕中间的部分区域。

3.停⽌状态 当⼀个Activity不再处于栈顶位置,并且完全不可见的时候,就进⼊了停⽌状态。

4.销毁状态 当⼀个Activity从返回栈中移除后就变成了销毁状态。

2.3、Android返回栈 Android是使⽤任务(Task)来管理Activity的,⼀个任务就是⼀组存放在栈⾥的Activity集合,这个栈被称作返回栈,栈(堆栈)是⼀种先进后出的数据结构,这⾥顺便提⼀下另⼀种常见的数据结构:队列,队列是⼀种先进先出的数据结构。

每当启动⼀个新的Activity时,它会被放⼊返回栈中,并处于栈顶的位置。

简要叙述activity的概念

简要叙述activity的概念

Activity是Android应用程序的重要组成部分,它代表用户界面上的一项单一操作。

每个Activity都是一个独立的屏幕,通常包含用户交互的界面元素,例如按钮、文本框、图像等。

一个应用程序通常包含多个Activity,它们之间可以通过Intent进行相互调用和传递数据。

1. Activity的生命周期一个Activity从创建到销毁经历了一系列的生命周期,包括以下阶段:1) onCreate():当Activity首次创建时调用,用于进行一些初始化操作,例如加载布局、初始化变量等。

2) onStart():当Activity可见但还无法与用户进行交互时调用,例如在onCreate()之后。

3) onResume():当Activity开始与用户进行交互时调用,此时Activity处于活动状态。

4) onPause():当Activity失去焦点但仍然可见时调用,例如在打开对话框或另一个Activity时。

5) onStop():当Activity不再可见时调用,通常发生在其他Activity启动时。

6) onDestroy():当Activity即将被销毁时调用,用于释放资源、保存状态等操作。

2. Activity之间的通信在Android应用程序中,不同的Activity之间需要进行数据和状态的传递。

这可以通过Intent来实现,通过putExtra()方法将数据绑定到Intent上,然后通过startActivity()方法启动另一个Activity并传递数据。

另外,还可以通过startActivityForResult()方法启动另一个Activity,并在其返回结果时获取数据。

3. Activity的启动模式Android提供了多种Activity的启动模式,包括standard、singleTop、singleTask和singleInstance。

每种启动模式都有不同的特点和适用场景,开发者可以根据实际情况选择合适的启动模式。

activity的三种状态

activity的三种状态

activity的三种状态全文共四篇示例,供读者参考第一篇示例:Activity是Android平台上的一个重要组件,它代表了用户与手机应用的交互界面。

在Android开发中,Activity的状态管理是十分重要的,了解和掌握Activity的三种状态对于开发人员来说是至关重要的。

Activity一共有三种状态:运行状态、暂停状态和停止状态。

下面将依次详细介绍这三种状态及其生命周期。

1. 运行状态当一个Activity被启动之后,它就进入了运行状态。

在这个状态下,Activity处于前台,即用户正在与之交互。

Activity的生命周期方法如下:onCreate()、onStart()、onResume()。

在onCreate()方法中进行初始化工作,onStart()方法表示Activity正在被启动,onResume()方法表示Activity已经可见并且用户正在与之交互。

在运行状态下,Activity可以响应用户的各种操作,比如点击按钮、输入文字等。

当Activity接收到其他的Intent或者用户手动关闭了它,那么它就会进入到下一个状态:暂停状态。

2. 暂停状态当一个Activity被另一个Activity遮挡而失去焦点时,它就会进入暂停状态。

在这个状态下,Activity并没有被销毁,只是失去了用户的焦点。

Activity的生命周期方法如下:onPause()。

在onPause()方法中,通常会保存一些临时数据或者释放一些资源。

在暂停状态下,Activity仍然处于活动状态,只是没有焦点而已。

当用户重新回到这个Activity时,它就会执行onResume()方法重新获得焦点,进入运行状态。

如果用户关闭了这个Activity,那么它就会进入到下一个状态:停止状态。

了解和掌握Activity的三种状态对于Android开发人员来说是非常重要的。

只有深入理解这些状态及其生命周期,才能编写出更加稳定和流畅的Android应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Activity的生命周期一、为什么要了解Activity的生命周期了解Activity的生命周期的根本目的就是为了设计用户体验更加良好的应用。

因为Activity 就相当于MVC中的View层,是为了更好的向用户展现数据,并与之交互。

了解Activity 的生命周期和各回调方法的触发时机,我们可以更好的在合适的地方向用户展现数据(因为每个应用每个Activity的作用不同,所以具体每个回调方法的最佳实践不好把握,但是只要遵循最基本的原则即可),保证数据的完整性和程序的良好运行。

下面是官方文档的原话:[java] view plaincopy1.Managing the lifecycle of your activities by implementing callback methods is crucial to develo ping a strong and flexible application. The lifecycle of an2.activity is directly affected by its association withother activities, its task and back stack.3.翻:对于开发一个强大和灵活的应用程序,实现Activity的回调方法来管理Activity的生命周期至关重要。

4.一个Activity的生命周期直接影响与它结合的其他Activitys和它的任务返回堆栈。

二、Activity生命周期的表现除了我们自行启动(start)或者结束(finish)一个Activity,我们并不能直接控制一个Activity 的生命状态,我们只能通过实现Activity生命状态的表现——即回调方法来达到管理Activity 生命周期的变化。

具体如下图所示:通过上图,我们可以看到这些方法定义了Activity整个生命周期。

为什么要定义这么多生命周期的方法呢?最主要的目的就是把Activity的各个不同的状态区分处理。

通过实施这些方法,您可以监视Activity生命周期中的三个嵌套循环:1、entire lifetime (整个生命周期)一个Activity整个生命周期,存在于onCreate()方法和onDestroy()调用之间。

你的Activity 应该在onCreate()方法里执行设置“全局”状态(如定义布局)。

并在onDestroy()方法里释放所有剩余资源。

例如,如果你的活动有一个线程在后台运行下载网络数据,它可以在onCreate()中创建该线程,然后在onDestroy()中停止线程。

2、visible lifetime(可见生命周期)一个Activity可见生命周期,存在于onStart()和onStop()调用之间。

在此期间,用户可以看到屏幕上的activity并与之交互。

当一个其他的Activity启动,并且这个Activity完全不可见的时候,onStop()方法就会被调用。

在这两个方法,你可以保持该Activity需要展示给用户的资源。

例如,您可以在onStart()方法里注册一个BroadcastReceiver来监控你的UI的变化,并在onStop()方法里注销它。

在整个生命周期的活动中,系统可能会调用onStart()和onStop()多次,因为活动之间交替进行隐藏或显示给用户。

3、 foreground lifetime(前台生命周期)一个Activity前台生命周期,存在于onResume()和onPause()调用之间。

在这段时间里,这个Activity在其他所有Activity的前面,拥有用户输入焦点。

一个Activity可以经常在前台状态发生转换—比如,当设备休眠或者弹出了个对话框。

因为经常会发生转换,所以在这两个方法之间的代码应该是轻量级的,防止导致其他转换变慢使得用户需要等待。

一个Activity本质上只有三种状态:Resumed(运行)、Paused(暂停)、Stopped(停止),因为从Activity被创建之后,它只可能在这三种状态保持长久的停留,其他的回调方法结束后的状态都只能称之为过渡状态。

比如进入到onStart方法后,执行完该方法,会立即进入到OnResume方法。

(这里所说的状态都是指对应的某个方法返回之后)即使一个Activity进入到Paused或者Stopped方法,它仍然是存在的,被保存在任务返回堆栈中。

它仍然保持着自身的所有实例和状态,所以根本不用担心它在返回到onResume方法时,实例会变为null,或者控件的事件监听不了(我以前就担心过这个问题)。

唯一需要考虑的就是,系统在内存不足的情况下,杀死在Paused或者Stopped状态下的Activity。

当一个Activity在Resumed状态下,它是不会因内存不够而被系统直接杀死(在极端的情况下也有可能被杀死,但是一般不会考虑这种情况)。

只有进入Paused或者Stopped状态才会,而且可能根本就不会去调用onStop()和onDestory()方法,所以onPause()方法是我们最大程度上保证Activity在销毁之前能够执行到的方法。

因此,如果你的某个Activity需要保存某些数据到数据库,您应该在onPause()里编写持久化数据的代码。

但要注意,你应该选择哪些信息必须保留在onPause(),因为这个方法任何阻塞程序都会阻止过渡到下一个Activity,这样给用户体验就感觉十分缓慢。

三、生命周期的验证1、基本的变化现在有两个Activity,LifecycleActivity和LifecycleOtherActivity,都重写了所有的生命周期方法,并加上了打印输出。

进入第一个Activity——LifecycleActivity,打印如下:[java] view plaincopy1.06-07 23:16:31.389: I/System.out(1341): LifecycleActivity onCreate2.06-07 23:16:31.455: I/System.out(1341): LifecycleActivity onStart3.06-07 23:16:31.455: I/System.out(1341): LifecycleActivity onResume一个Activity的创建,没什么可说的。

在LifecycleActivity中有一个按钮,点击事件为[java] view plaincopy1.public void onClick(View v) {2. startActivity(new Intent(LifecycleActivity.this, LifecycleOtherActivity.class));3.}点击该按钮,打印如下:[java] view plaincopy1.06-07 23:40:40.545: I/System.out(1409): LifecycleActivity onPause2.06-07 23:40:40.585: I/System.out(1409): LifecycleOtherActivity onCreate3.06-07 23:40:40.585: I/System.out(1409): LifecycleOtherActivity onStart4.06-07 23:40:40.585: I/System.out(1409): LifecycleOtherActivity onResume启动一个全屏显示的LifecycleOtherActivity,前面的LifecycleActivity肯定是要Stopped,但是这个调用的顺序一定要注意。

它是先onPause,然后等LifecycleOtherActivity执行完onResume方法后,在执行的onStop方法。

这也是为什么强调在onPause方法里面,我们只能去执行一些轻量级的代码。

现在LifecycleOtherActivity处于前台,并拥有用户焦点,现在点击返回按钮,打印如下:[java] view plaincopy1.06-07 23:47:21.796: I/System.out(1508): LifecycleOtherActivity onPause2.06-07 23:47:21.815: I/System.out(1508): LifecycleActivity onRestart3.06-07 23:47:21.815: I/System.out(1508): LifecycleActivity onStart4.06-07 23:47:21.815: I/System.out(1508): LifecycleActivity onResume5.06-07 23:47:22.295: I/System.out(1508): LifecycleOtherActivity onStop6.06-07 23:47:22.295: I/System.out(1508): LifecycleOtherActivity onDestroy按下返回按钮,相当于finish掉了LifecycleOtherActivity,看它的执行过程,也是先暂停自身,然后再去重启LifecycleActivity,等LifecycleActivity重启完毕后,在调用onStop和onDestory方法。

2、启动对话框样式的Activity现在有两个Activity,LifecycleActivity和LifecycleDialogActivity(对话框样式的Activity),都重写了所有的生命周期方法,并加上了打印输出。

进入第一个Activity——LifecycleActivity,打印如下:[java] view plaincopy1.06-07 23:16:31.389: I/System.out(1341): LifecycleActivity onCreate2.06-07 23:16:31.455: I/System.out(1341): LifecycleActivity onStart3.06-07 23:16:31.455: I/System.out(1341): LifecycleActivity onResume一个Activity的创建,没什么可说的。

在LifecycleActivity中有一个按钮,点击事件为[java] view plaincopy1.public void onClick(View v) {2. startActivity(new Intent(LifecycleActivity.this, LifecycleDialogActivity.class));3.}点击该按钮,打印如下:[java] view plaincopy1.06-08 00:01:04.245: I/System.out(1508): LifecycleActivity onPause2.06-08 00:01:04.325: I/System.out(1508): LifecycleDialogActivity onCreate3.06-08 00:01:04.325: I/System.out(1508): LifecycleDialogActivity onStart4.06-08 00:01:04.325: I/System.out(1508): LifecycleDialogActivity onResum启动一个对话框样式的LifecycleDialogActivity,并不会调用onStop方法现在LifecycleDialogActivity处于前台,并拥有用户焦点,现在点击返回按钮,打印如下:[java] view plaincopy1.06-08 00:02:05.535: I/System.out(1508): LifecycleDialogActivity onPause3.06-08 00:02:06.165: I/System.out(1508): LifecycleDialogActivity onStop4.06-08 00:02:06.165: I/System.out(1508): LifecycleDialogActivity onDestroy可以看到在LifecycleDialogActivity暂停之后,之前调用的是LifecycleActivity的onResume 方法。

相关文档
最新文档