`
imshare
  • 浏览: 323682 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

Android生命周期重要概念详解

阅读更多
    activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道,所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当 activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的 activity(使用ActivityGroup)。大部分的Activity子类都需要实现以下两个接口:

    onCreate(Bundle)接口是初始化activity的地方. 在这儿通常可以调用setContentView(int)设置在资源文件中定义的UI, 使用findViewById(int) 可以获得UI中定义的窗口.
    onPause()接口是使用者准备离开activity的地方,在这儿,任何的修改都应该被提交(通常用于ContentProvider保存数据).
为了能够使用Context.startActivity(),所有的activity类都必须在AndroidManifest.xml文件中定义有相关的“activity”项。

activity类是Android 应用生命周期的重要部分。

Activity生命周期

    在系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止。

Activity有四种本质区别的状态:

    在屏幕的前台(Activity栈顶),叫做活动状态或者运行状态(active or running)
如果一个Activity失去焦点,但是依然可见(一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶),叫做暂停状态(Paused)。一个暂停状态的Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被杀掉。
    如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被杀掉。
如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接杀掉它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
下面的图显示了Activity的重要状态转换,矩形框表明Activity在状态转换之间的回调接口,开发人员可以重载实现以便执行相关代码,带有颜色的椭圆形表明Activity所处的状态。




activity 生命周期(lifecycle)

在上图中,Activity有三个关键的循环:

    整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。
     可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致 UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。
前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。
Activity的整个生命周期都定义在下面的接口方法中,所有方法都可以被重载。所有的Activity都需要实现 onCreate(Bundle)去初始化设置,大部分Activity需要实现onPause()去提交更改过的数据,当前大部分的Activity也需要实现onFreeze()接口,以便恢复在onCreate(Bundle)里面设置的状态。

public class Activity extends ApplicationContext {

protected void onCreate(Bundle icicle);

protected void onStart();

protected void onRestart();

protected void onResume();

protected void onPause();

protected void onStop();

protected void onDestroy();

}
  • 大小: 64.6 KB
分享到:
评论

相关推荐

    android生命周期详解

    Android中的Activity生命周期是每个Android开发者必须深入理解和掌握的关键概念。Activity是Android应用程序的基本构建块,它代表用户界面的一个屏幕。了解其生命周期对于优化应用性能、处理资源管理以及确保正确...

    Android Fragment的生命周期详解

    理解Fragment的生命周期对于高效且稳定地构建Android应用至关重要。本文将深入探讨Fragment的生命周期,帮助开发者更好地理解和掌握这一核心概念。 Fragment的生命周期与Activity紧密相关,因为它总是嵌套在某个...

    android Activity生命周期 详解

    在Android开发中,Activity是...理解并熟练掌握Activity生命周期对于开发高效、响应式的Android应用至关重要。通过正确处理生命周期事件,开发者可以确保应用在各种场景下都能提供良好的用户体验,并有效地管理资源。

    两分钟让你彻底明白Android Activity生命周期的详解(图文介绍)

    理解Activity的生命周期是每个Android开发者必须掌握的关键概念。本文将深入解析Android Activity的生命周期,并通过实例演示来帮助读者更好地理解和掌握。 Activity的生命周期由一系列回调方法组成,这些方法在...

    android intent 的生命周期讲解和历程

    总结来说,Intent是Android组件间通信的核心,它的生命周期与Activity紧密关联。理解和熟练运用Intent对于优化用户体验和提高代码效率至关重要。在开发中,我们应充分利用Intent的特性,实现高效、灵活的组件交互。

    android核心技术与实例详解光盘源代码3

    同时,讨论了Intent的概念,它是Android系统中不同组件间通信的重要桥梁。此外,还涵盖了多Activity应用的设计模式和Back Stack的管理。 第15章:服务(Service)与广播接收者(BroadcastReceiver) 在这一章,读者...

    Android 典型技术模块开发详解 pdf

    《Android典型技术模块开发详解》这本书是为初入Android开发领域的工作者量身打造的指南,旨在帮助读者深入理解和掌握Android各个关键模块的开发技术。在本文中,我们将详细探讨书中可能涉及的重要知识点,并尽可能...

    Android核心技术与实例详解书后源码

    书中提供的源码是学习Android编程的重要参考资料,它能让读者更直观地理解书中的概念和实践技巧。以下是对这些源码及Android核心技术的详细解析: 1. **Android基础知识**:从第1章开始,源码可能包括对Android开发...

    Android之Activity的生命周期和Activity间的跳转和数据传递)

    ### Android之Activity的生命周期与Activity间的跳转及数据传递 #### Activity的概念与作用 在Android应用开发中,`Activity`是四大组件之一,主要负责管理应用程序的用户界面(UI)。一个Activity代表一个屏幕上的...

    Android核心技术与实例详解 随书源码

    第14章:此章可能讲解了Android服务(Service)的概念,服务的生命周期,以及如何启动和绑定服务。还可能涵盖了IntentService的使用,以及后台任务的执行策略。 第11章:可能涉及到了广播接收器(BroadcastReceiver...

    《给 Android 开发者的 RxJava 详解》 PDF

    6. **生命周期管理**:在 Android 中,Activity 和 Fragment 有其生命周期,RxJava 的 takeUntil 和 takeWhile 操作符可以帮助开发者更好地管理订阅与取消订阅,防止内存泄漏。 7. **热点和冷bservable**:理解热点...

    android启动以及activity生命周期分析

    在Android开发过程中,理解应用程序如何启动及Activity的生命周期是非常重要的。这不仅有助于我们更好地管理程序的状态,还能帮助我们在遇到内存泄漏等问题时进行快速定位和解决。 #### ActivityThread `...

    Android编程中activity的完整生命周期实例详解

    本文实例分析了Android编程中activity的完整生命周期。分享给大家供大家参考,具体如下: android中 activity有自己的生命周期,对这些知识的学习可以帮助我们在今后写程序的时候,更好的理解其中遇到的一些错误。这...

    android系统原理与开发要点详解

    【Android系统的开发综述】则可能涵盖了Android应用开发的基本流程,包括Android Studio的使用、项目结构、布局设计、Activity生命周期等关键概念。这部分内容对于初学者来说是至关重要的,它将引导开发者进入...

    android 项目开发详解代码

    "android 项目开发详解代码" 提供了一套完整的开发实例,旨在帮助学习者深入理解Android应用的生命周期、用户界面设计、数据存储、网络通信等核心概念。这份教材通过实际的代码示例,使得理论知识与实践相结合,有助...

    Android应用开发详解(PDF+全部的源代码)

    Android的生命周期管理是开发者必须理解的关键概念,理解何时创建、启动、暂停、恢复或销毁Activity和服务至关重要,这对于优化资源使用和避免内存泄漏至关重要。 在数据存储方面,Android提供了SQLite数据库、...

    android 核心技术与实例详解

    1. **Activity生命周期**:Activity是Android应用程序中的用户界面组件,其生命周期包括了创建、启动、运行、暂停、停止和销毁等状态。理解并熟练掌握Activity的生命周期管理是Android开发的基础。 2. **Intent与...

    Android应用开发详解(包括源码)

    进一步深入,你将接触到Android的组件通信机制,比如使用Fragment进行屏幕分片,以及使用FragmentTransaction管理它们的生命周期。对于多模块项目,了解依赖注入框架如Dagger2或Hilt也很重要,它们可以帮助减少代码...

    android核心技术与实例详解口袋微博项目源码

    《Android核心技术与实例详解》是Android开发者深入了解平台技术并提升实战技能的重要参考资料。该资源包含的是服务器端的源码,提供了实现口袋微博项目的详细代码,旨在帮助开发者掌握Android应用开发中的核心技术...

Global site tag (gtag.js) - Google Analytics