基础总结篇之一:Activity生命周期

合集下载

activity各表作用

activity各表作用

activity各表作用一、Activity的作用Activity是Android应用程序的基本组件之一,它承载了用户与应用程序之间的交互。

Activity的作用主要体现在以下几个方面:1. 提供UI界面:Activity是Android应用程序的界面展示层,通过Activity可以展示各种UI组件,如按钮、文本框、列表等,使用户可以与应用程序进行交互。

2. 处理用户输入:Activity负责接收用户的输入,如点击按钮、触摸屏幕等,然后根据用户的操作进行相应的处理,如启动其他Activity、发送网络请求等。

3. 生命周期管理:Activity具有丰富的生命周期方法,如onCreate、onStart、onResume等,通过这些方法可以管理Activity的创建、销毁、暂停、恢复等过程,以及保存和恢复Activity的状态。

4. 与其他组件的交互:Activity可以与其他Android组件进行交互,如启动其他Activity、调用其他应用程序的服务、发送广播等,从而实现不同组件之间的通信和协作。

5. 启动模式设置:通过设置Activity的启动模式,可以控制Activity的创建和销毁方式,如设置为singleTop可以使得Activity在栈顶时不重新创建,提高性能和用户体验。

二、布局文件(XML)的作用布局文件是Activity的界面布局描述文件,通过布局文件可以定义Activity的UI界面。

布局文件的作用主要体现在以下几个方面:1. 视图层次结构:布局文件可以定义界面的视图层次结构,即各种UI组件的层次关系和排列方式,如线性布局、相对布局、帧布局等。

2. UI组件的属性设置:通过布局文件可以为UI组件设置各种属性,如大小、位置、颜色、背景等,从而实现对UI界面的定制和美化。

3. 响应事件的绑定:布局文件可以为UI组件绑定响应事件,如点击事件、长按事件等,从而实现用户的交互操作。

4. 多语言支持:通过布局文件可以实现多语言的支持,根据系统语言自动切换布局文件,实现国际化和本地化。

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; ......

【推荐下载】android 中activity的启动模式是singleTask时清除activity的栈顶activity的生命周期小计

【推荐下载】android 中activity的启动模式是singleTask时清除activity的栈顶activity的生命周期小计
onDestory()
StandThreeActivity.onPause()
BaseActivity.onResume()
StandThreeActivity.onStop()
onDestory()
总的来讲,如果一个Activity的启动模式是SinleTask,在销毁栈内的其他
Activity时是从其栈顶的底部开始一个一个的销毁,直到栈顶的activity走
android中activity的启动模式是singleTask时清除activity的栈顶
activity的生命周期小计
2017/06/190安卓开发中经常会涉及到activity启动模式,当一个activity第
singleTASK时,清除栈顶的activity的时候,位于栈顶的activity的生命周期是如
onPause(),然后启动SingleTask的Activity,最后才销毁栈顶的Activity,走onStop
及onDestaory
tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!
StandThreeActivity
生命周期如下:
BaseActivity.onCreate()
onStart()
onResume()
onPuase()
StandOneActivity.onCreate()
onStart()
onResume()
onPause()
StandTwoActivity.onCreate()
何走完的呢?这里做一个小计:
BaseActivity的启动模式是singleTask模式
StandOneActivity
StandTwoActivity

activity共23页PPT资料

activity共23页PPT资料
另外,一个Activity类似于一个窗口,当有另一个窗口启动时候, 会把原来的Activity覆盖掉,那么原来的Activity处于什么状态呢?在本 章我们就会一起探讨Activity的作用以及Activity的方法以及Activity的 生命周期。
什么是Activity
Activity是构建Android应用程序最基本的一种组件。在应用中, 一个Activity通常就是一个单独的屏幕。每一个activity都被实现为一个 独立的类,并且继承于Activity这个基类,其主要的功用是与用户进行交 互。
Activity生命周期
点击模拟器的返回键 日志如下:
Activity生命周期
生命周期七个方法阐释:
onCreate() 创建Activity时候调用。同时还以Bundle形式
提供存储以前任何状态的访问
onRestart() 重新启动Activity调用,该Activity在堆栈中,
Activity生命周期
通常一个Activity基本处于以下四种状态中的一种 当Activity在屏幕前台运行时(该Activity位于堆栈
的顶部),此时成为活动状态或者为运行状态。
当Activity已经失去焦点,但仍然可见,此时该 Activity处于暂停状态
当一个Activity跳转到另一个Activity,即一个新 Activity覆盖了原来的Activity,此时原Activity处于 停止状态。
当一个Activity处于暂停状态或者停止状态的时候, 系统可以根据需要是否销毁该Activity。
Activity生命周期
Activity生命周期
1. Activity的整个生命周期从onCreate方法开始, 到最终调用onDestroy方法结束。所以对于该 Activity中的全局的资源在onCreate方法中设置, 而最终在onDestroy方法中进行资源的回收。

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在它前面处于获得状态,当进入暂停状态,它会和处于获得状态一样对待,只是它不能获得用户的输入而已。

flagment生命周期相关

flagment生命周期相关

(一)理解Fragment生命周期 (1)(二)android Fragments详解六:处理fragement的生命周期 (5)把条目添加到动作栏 (5)处理fragement的生命周期 (5)协调与activity生命周期的关系 (7)(三)Fragment生命周期(各阶段状态) (7)(四)Fragment学习-----简介与生命周期研究(详细代码) (8)1、它在一个activity里面表示一个行为或者用户接口的一部分。

(9)2、一个fragment必须总是绑定到一个activity中,虽然fragment有自己的生命周期,但同时也被它的宿主activity的生命周期直接影响。

(9)3、fragment可以定义自己的布局文件(layout),当然其也可以没有自己的UI。

(9)4、Fragment对象的生命周期。

(10)5、Fragment的生命周期分析 (15)(一)理解Fragment生命周期分类:Android的深入2012-11-29 14:33 36454人阅读评论(20) 收藏举报官网帮助文档链接:/guide/components/fragments.html主要看两张图,和跑代码一,Fragment的生命周二,与Activity生命周期的对比场景演示: 切换到该Fragment11-29 14:26:35.095: D/AppListFragment(7649): onAttach11-29 14:26:35.095: D/AppListFragment(7649): onCreate11-29 14:26:35.095: D/AppListFragment(7649): onCreateView11-29 14:26:35.100: D/AppListFragment(7649): onActivityCreated 11-29 14:26:35.120: D/AppListFragment(7649): onStart11-29 14:26:35.120: D/AppListFragment(7649): onResume屏幕灭掉:11-29 14:27:35.185: D/AppListFragment(7649): onPause11-29 14:27:35.205: D/AppListFragment(7649): onSaveInstanceState 11-29 14:27:35.205: D/AppListFragment(7649): onStop屏幕解锁11-29 14:33:13.240: D/AppListFragment(7649): onStart11-29 14:33:13.275: D/AppListFragment(7649): onResume切换到其他Fragment:11-29 14:33:33.655: D/AppListFragment(7649): onPause11-29 14:33:33.655: D/AppListFragment(7649): onStop11-29 14:33:33.660: D/AppListFragment(7649): onDestroyView切换回本身的Fragment:11-29 14:33:55.820: D/AppListFragment(7649): onCreateView11-29 14:33:55.825: D/AppListFragment(7649): onActivityCreated11-29 14:33:55.825: D/AppListFragment(7649): onStart11-29 14:33:55.825: D/AppListFragment(7649): onResume回到桌面11-29 14:34:26.590: D/AppListFragment(7649): onPause11-29 14:34:26.880: D/AppListFragment(7649): onSaveInstanceState 11-29 14:34:26.880: D/AppListFragment(7649): onStop回到应用11-29 14:36:51.940: D/AppListFragment(7649): onStart11-29 14:36:51.940: D/AppListFragment(7649): onResume退出应用11-29 14:37:03.020: D/AppListFragment(7649): onPause11-29 14:37:03.155: D/AppListFragment(7649): onStop11-29 14:37:03.155: D/AppListFragment(7649): onDestroyView11-29 14:37:03.165: D/AppListFragment(7649): onDestroy11-29 14:37:03.165: D/AppListFragment(7649): onDetach比Activity多了一些生命周期,完整和Activity对接上,大家好好利用。

activity生命周期有几种状态

activity生命周期有几种状态

activity生命周期有几种状态
Activity生命周期有五种状态,分别是:
1.启动状态:当Activity启动后,会进入此状态,但此状态很短暂,会很快进入运行状态。

2.运行状态:Activity处于屏幕的最前端,它是可见的、有焦点的,并可以与用户进行交互,如单击、长按等事件。

此时,Activity 处于活动或运行状态。

3.暂停状态:在某些情况下,如Activity上覆盖了一个透明或非全屏的Activity,被覆盖的Activity仍然对用户可见,但无法获取焦点,此时它处于暂停状态。

暂停的Activity仍然是存活状态,保留着所有的状态和成员信息,并保持和窗口管理器的连接,但当系统内存不足时,它可能会被系统杀死。

4.停止状态:当Activity完全不可见时,如被另一个Activity 遮挡,它就处于停止状态。

此时,Activity仍然保留着当前的状态和成员信息,但由于对用户不可见,如果系统内存不足,这个Activity 很容易被系统杀死。

5.销毁状态:当Activity处于销毁状态时,意味着它将被清理出内存。

请注意,Activity生命周期指的是一个Activity从创建到销毁的全过程,包括上述的五种状态。

在Android开发中,理解和掌握Activity的生命周期对于内存管理和用户体验都至关重要。

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应用。

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 。

麦子学院Android开发教程Activity管理机制

麦子学院Android开发教程Activity管理机制

Android的管理主要是通过Activity栈和Task来进行的,这里将着重讲解Activity栈、Task以及Activity生命周期等概念。

1. Activity栈Android的管理主要是通过Activity栈来进行的。

当一个Activity启动时,系统根据其配置或调用的方式,将Activity压入一个特定的栈中,系统处于运行(Running or Resumed)状态。

当按Back键或触发finish()方法时,Activity会从栈中被压出,进而被销毁,当有新的Activity压入栈时,如果原Activity仍然可见,则原Activity的状态将转变为暂停(Paused)状态,如果原Activity完全被遮挡,那么其状态将转变为停止(Stopped)。

2. TaskTas与Activity栈有着密切的联系。

一个Task对应于一个Activity栈,Task是根据用户体验组成的运行期逻辑元素,其与应用的区别是,Task中的Activity可以由不同的应用组成。

在实际的终端使用中,在主界面长按Home键时弹出的一个网格界面即是当前运行的Task而非应用。

Task的定义位于frameworks\base\services\java\com\android\server\am\目录下的TaskRecord.java中,一个Task由tasked、affinity(亲和性)、clearOnBackground、intent、affinityIntent、origActivity、realActivity、numActivities、lastActiveTime、rootWasReset、stringName等属性构成。

(1)Task间移动配置android:allowTaskReparenting属性用来配置是否允许Activity从启动它的Task移动到和该Activity设置的Task亲和性相同的Task中,示例如下:<activity android:name="android.app.cts.ActivityManagerRecentOneActivity"android:label="ActivityManagerRecentOneActivity"android:allowTaskReparenting="true"android:taskAffinity="android.app.cts.recentOne"><intent-filter><action android:name="android.intent.action.MAIN" /></intent-filter></activity>(2)Task状态配置android:alwaysRetainTaskState属性用于配置是否保留Activity所在的Task状态,默认为“false”。

Activity基础知识

Activity基础知识

Activity基础知识Activity⼀、Activity是什么Activity是⼀种可以包含⽤户界⾯的组件,主要⽤于和⽤户进⾏交互。

⼀个应⽤程序可以包含零个或多个活动。

⼆、活动的基本⽤法1. ⼿动创建活动打开android studio,在src/main/java⽬录下右键选择new -> Activity -> Empty Activity即可。

默认情况下会勾选Generate a Layout File,即⾃动⽣成布局⽂件。

2. 创建和加载布局⽂件若步骤1中并未勾选默认创建布局⽂件,则在src/main/res⽬录下,右键选择new->Android Resources File,新建⼀个布局⽂件,并在相应的activity中,调⽤setContentView(R.id.资源⽂件名)⽅法设置为该activity的引⽤布局⽂件。

3. 在AndroidManifest⽂件中注册注册代码⽰例:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.joygin.viewtest"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><!--Activity注册代码--><!--name为被注册的activity名称,label为标题栏的名称,主Activity的标题栏名称还会成为应⽤程序名称--><activity android:name=".MainActivity" android:label="标题栏名称"><!--意图过滤器--><intent-filter><!--配置该Activity为主Activity,即程序的最开始画⾯--><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity></application></manifest>4. 在Activity中使⽤Menu1、在res⽬录下创建⼀个名为menu的Directory,并在menu⽬录下右键new -> Menu resource file ,创建⼀个名为main的菜单布局⽂件2、菜单布局⽂件中设置menu的内容,⽰例代码如下:<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="/apk/res/android"><!--id指定菜单项的唯⼀标识符,title指定菜单项的名称--><item android:id="@+id/add_item"android:title="add" /><item android:id="@+id/remove_item"android:title="Remove"/></menu>3、在对象的Activity源⽂件中,重写onCreateOptionsMenu()⽅法,⽰例代码如下://返回值为true,表⽰允许创建的菜单显⽰出来,返回false表⽰禁⽌显⽰。

Activity的生命周期及回调方法

Activity的生命周期及回调方法

Android上机实验报告课程名称:Android 应用开发技术教师姓名:江有福日期:09.23 学号:150607131 学生姓名:班级:Z15计算机院系:数理与信息学院图1 第一个Activity的运行结果图2 第二个Activity的运行结果2.5、范例2:实现应用对话框主题的关于Activity在Eclipse中创建Android项目,实现应用对话框主题的关于Activity。

范例1:实现根据身高计算标准体重在Eclipse中创建Android项目,实现根据输入的性别和身高计算标准体重。

图1 输入性别和身高界面图2 显示计算结果界面范例2:带选择头像的用户注册在Eclipse中创建Android项目,实现带选择头像的用户注册页面,打开新的Activity选择头像,并将选择的头像返回到原Activity中。

9.创建Fragment要创建一个Fragment,必须创建一个Fragment的子类,或者继承自另一个已经存在的Fragment的子类。

例如,要创建一个名称为NewsFragment,并重写onCreateView()方法,可以使用下面的代码。

public class NewsFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// 从布局文件news.xml 加载一个布局文件View v = inflater.inflate(yout.news, container, true);return v;}}Fragment比较强大的功能之一就是可以合并两个Activity,从而让这两个Activity在一个屏幕上显示,例如下图所示(参照Android官方文档),左边的两个图分别代表两个Activity,右边的这个图表示包括两个Fragment的Activity,其中第一个Fragment的内容是Activity A,第二个Fragment的内容是Activity B。

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()

Android中的Activity生命周期

Android中的Activity生命周期

Android中的Activity生命周期摘要:activity是android应用中最重要最常用的应用组件之一,一直都是android应用开发的一个重要组成部分。

对activity生命周期进行介绍的论文也有很多,但大多都只停留在对其基本状态和周期函数进行简单的初步的介绍,给读者一种“不识庐山真面目,只缘身在此山中”的感觉。

该文从全局出发通过一个简单的例子,系统而全面的介绍了activity的生命周期。

使读者能够清晰的理解activity的生命周期和android程序运行时各个方法的功能以及何时调用。

关键词:android;activity;生命周期中图分类号:tn87 文献标识码:a 文章编号:1009-3044(2013)11-2713-03android的基本组件包括activity、service、broadcastreceive 和contentprovider等,activity是应用程序的表示层。

应用程序中的每个显示都是通过继承和扩展基类activity来实现的。

activity利用view来实现应用程序的图形用户界面(graphical user interface简称gui),手机用户则直接通过gui和应用程序做交互,如应用程序通过gui向用户显示信息,用户通过gui向应用程序发出指令和响应[1]。

1 android应用程序的组成android是google开发的基于linux平台的开源移动操作系统。

从架构上看,分为应用程序层、应用程序框架层、android本地库及运行环境和linux内核层。

一个通过android框架所创建的android应用程序[2],有四种基本框架:1)activity:android应用的最主要组成部分,作为应用程序的界面框架,负责动态的加载各种用户界面视图,实现底层消息的传递等。

2) service:运行在android应用后台的一种组件,有两种最基本的功能,一是执行长时间运行的耗时操作,如音乐播放、网络下载等。

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驱动来决定的。

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报错。

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。

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

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

子曰:溫故而知新,可以為師矣。

《論語》学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精髓。

近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下。

熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适的时间被servlet容器调用。

其实android中的Activity运行机制跟servlet有些相似之处,Android系统相当于servlet容器,Activity相当于一个servlet,我们的Activity处在这个容器中,一切创建实例、初始化、销毁实例等过程都是容器来调用的,这也就是所谓的“Don't call me, I'll call you.”机制。

我们来看一下这一张经典的生命周期流程图:相信不少朋友也已经看过这个流程图了,也基本了解了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,如下:[java]view plaincopy1.package com.scott.lifecycle;2.3.import android.app.Activity;4.import android.content.Context;5.import android.content.Intent;6.import android.os.Bundle;7.import android.util.Log;8.import android.view.View;9.import android.widget.Button;10.11.public class LifeCycleActivity extends Activity {12.13.private static final String TAG = "LifeCycleActivity";14.private Context context = this;15.private int param = 1;16.17.//Activity创建时被调用18.@Override19.public void onCreate(Bundle savedInstanceState) {20.super.onCreate(savedInstanceState);21. Log.i(TAG, "onCreate called.");22.23. setContentView(yout.lifecycle);24.25. Button btn = (Button) findViewById(R.id.btn);26. btn.setOnClickListener(new View.OnClickListener() {27.@Override28.public void onClick(View v) {29. Intent intent = new Intent(context, TargetActivity.class);30. startActivity(intent);31. }32. });33. }34.35.//Activity创建或者从后台重新回到前台时被调用36.@Override37.protected void onStart() {38.super.onStart();39. Log.i(TAG, "onStart called.");40. }41.42.//Activity从后台重新回到前台时被调用43.@Override44.protected void onRestart() {45.super.onRestart();46. Log.i(TAG, "onRestart called.");47. }48.49.//Activity创建或者从被覆盖、后台重新回到前台时被调用50.@Override51.protected void onResume() {52.super.onResume();53. Log.i(TAG, "onResume called.");54. }55.56.//Activity窗口获得或失去焦点时被调用,在onResume之后或onPause之后57./*@Override58. public void onWindowFocusChanged(boolean hasFocus) {59. super.onWindowFocusChanged(hasFocus);60. Log.i(TAG, "onWindowFocusChanged called.");61. }*/62.63.//Activity被覆盖到下面或者锁屏时被调用64.@Override65.protected void onPause() {66.super.onPause();67. Log.i(TAG, "onPause called.");68.//有可能在执行完onPause或onStop后,系统资源紧张将Activity杀死,所以有必要在此保存持久数据69. }70.71.//退出当前Activity或者跳转到新Activity时被调用72.@Override73.protected void onStop() {74.super.onStop();75. Log.i(TAG, "onStop called.");76. }77.78.//退出当前Activity时被调用,调用之后Activity就结束了79.@Override80.protected void onDestroy() {81.super.onDestroy();82. Log.i(TAG, "onDestory called.");83. }84.85./**86. * Activity被系统杀死时被调用.87. * 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死.88. * 另外,当跳转到其他Activity或者按Home键回到主屏时该方法也会被调用,系统是为了保存当前View组件的状态.89. * 在onPause之前被调用.90. */91.@Override92.protected void onSaveInstanceState(Bundle outState) {93. outState.putInt("param", param);94. Log.i(TAG, "onSaveInstanceState called. put param: " + param);95.super.onSaveInstanceState(outState);96. }97.98./**99. * Activity被系统杀死后再重建时被调用.100. * 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,用户又启动该Activity.101. * 这两种情况下onRestoreInstanceState都会被调用,在onStart之后.102. */103.@Override104.protected void onRestoreInstanceState(Bundle savedInstanceState) {105. param = savedInstanceState.getInt("param");106. Log.i(TAG, "onRestoreInstanceState called. get param: " + par am);107.super.onRestoreInstanceState(savedInstanceState);108. }109.}大家注意到,除了几个常见的方法外,我们还添加了onWindowFocusChanged、onSaveInstanceState、onRestoreInstanceState方法:1.onWindowFocusChanged方法:在Activity窗口获得或失去焦点时被调用,例如创建时首次呈现在用户面前;当前Activity被其他Activity覆盖;当前Activity转到其他Activity或按Home键回到主屏,自身退居后台;用户退出当前Activity。

以上几种情况都会调用onWindowFocusChanged,并且当Activity被创建时是在onResume之后被调用,当Activity 被覆盖或者退居后台或者当前Activity退出时,它是在onPause之后被调用,如图所示:这个方法在某种场合下还是很有用的,例如程序启动时想要获取视特定视图组件的尺寸大小,在onCreate中可能无法取到,因为窗口Window对象还没创建完成,这个时候我们就需要在onWindowFocusChanged里获取;如果大家已经看过我写的Android动画之Frame Animation这篇文章就会知道,当时试图在onCreate里加载frame动画失败的原因就是因为窗口Window对象没有初始化完成,所以最后我将加载动画的代码放到了onWindowFocusChanged中,问题迎刃而解。

相关文档
最新文档