这周学习到了很多东西,包括代码、想问题的方式等等,很受启发。另外,这三个月,一边做web方面的工作,一遍学习Android,现在公司有Android的项目,是有关打车计程方面的APP,我终于成功的转向了Android,得到了认可,很高兴。
这三天在工作中写代码、读代码的过程中越来越感觉Android的activity开发的声明周期是那么重要,自学的时候也写过一些程序,但是基本不用activity的onstart生么的代码,就是oncreate,现在写能生产的代码了,终于知道这个方法的重要性了。于是看看Android的官方文档,把学到的东西记录一下:
管理activity的生命周期
通过实现回调方法来管理你的activity的生命周期,对于开发一个健壮而又灵活的应用程序而言是至关重要的。 与其它activity的关联性、自身的任务和back stack直接影响着一个activity的生命周期。
一、activity可能处于三种基本的状态:
1、Resumed
activity在屏幕的前台并且拥有用户的焦点。(这个状态有时也被叫做“running”。)
2、Paused
另一个activity在前台并拥有焦点,但是本activity还是可见的。 也就是说,另外一个activity覆盖在本activity的上面,并且那个activity是部分透明的或没有覆盖整个屏幕。 一个paused的activity是完全存活的(Activity 对象仍然保留在内存里,它保持着所有的状态和成员信息,并且保持与window manager的联接),但在系统内存严重不足的情况下它能被杀死。
3、Stopped
本activity被其它的activity完全遮挡住了(本activity目前在后台)。 一个stopped的activity也仍然是存活的(Activity 对象仍然保留在内存中,它保持着所有的状态和成员信息,但是不再与window manager联接了)。 但是,对于用户而言它已经不再可见了,并且当其它地方需要内存时它将会被杀死。
如果activity被paused或stopped了,则系统可以从内存中删除它,通过请求finish(调用它的 finish() 方法)或者直接杀死它的进程。 当这个activity被再次启动时(在被finish或者kill后),它必须被完全重建
二、实现生命周期回调方法
1、onCreate()
activity第一次被创建时调用。在这里你应该完成所有常见的静态设置工作——创建view、绑定list数据等等。 本方法传入一个包含了该activity前一个状态的Bundle对象(如果之前已捕获了状态的话,详见后面的保存Activity状态)。下一个回调方法总是onStart()。
2、onRestart()
activity被停止后、又再次被启动之前调用。下一个回调方法总是onStart()
3、onStart()
activity要显示给用户之前调用。如果activity进入前台,则下一个回调方法是onResume();如果进入隐藏状态,则下一个回调方法是onStop()。
4、onResume()
activity开始与用户交互之前调用。这时activity是在activity栈的顶端,用户可以向其中输入。下一个回调方法总是onPause()。
5、onPause()
当系统准备启动另一个正在恢复的activity时调用。这个方法通常用于把未保存的改动提交为永久数据、停止动画播放、以及其它可能消耗CPU的工作等等。 它应该非常迅速地完成工作,因为下一个activity在本方法返回前是不会被恢复运行的。如果activity返回前台,则下一个回调方法是onResume();如果进入用户不可见状态,则下一个是onStop()
6、onStop()
当activity不再对用户可见时调用。原因可能是它即将被销毁、或者其它activity(已有或新建的)被恢复运行并要覆盖本activity。如果activity还会回来与用户交互,则下一个回调方法是onRestart();如果这个activity即将消失,则下一个回调方法是onDestroy()
7、onDestroy()
在本activity被销毁前调用。这是activity收到的最后一个调用。可能是因为activity完成了工作(有些人在这里调用finish()),也可能是因为系统为了腾出空间而临时销毁activity的本实例。可以利用isFinishing()方法来区分这两种情况。
三、activity生命周期中三个嵌套的循环
1、activity的完整生存期会在 onCreate() 调用和 onDestroy() 调用之间发生。 你的activity应该在 onCreate() 方法里完成所有“全局global”状态的设置(比如定义layout), 而在onDestroy() 方法里释放所有占用的资源。 例如,如果你的activity有一个后台运行的线程,用于从网络下载数据,那么你应该在 onCreate() 方法里创建这个线程并且在 onDestroy() 方法里停止这个线程。
2、activity的可见生存期会在 onStart() 调用和 onStop() 调用之间发生。在这期间,用户可在屏幕上看见这个activity并可与之交互。 例如,当一个新的activity启动后调用了 onStop() 方法,则这个activity就无法被看见了。 在这两个方法之间,你可以管理那些显示activity所需的资源。例如,你可以在 onStart() 方法里注册一个 BroadcastReceiver 用于监控影响用户界面的改动。并且当用户不再看到你的显示内容时,在 onStop() 方法里注销掉它。 系统会在activity的整个生存期内多次调用 onStart() 和onStop(), 因为activity可能会在显示和隐藏之间不断地来回切换。
3、activity的前台生存期会在 onResume() 调用和 onPause() 之间发生。在这期间,activity是位于屏幕上所有其它的activity之前,并且拥有用户的输入焦点。 activity可以频繁地进入和退出前台——例如, 当设备进入休眠时或者弹出一个对话框时, onPause() 就会被调用。因为这个状态可能会经常发生转换,为了避免切换迟缓引起的用户等待,这两个方法中的代码应该相当地轻量化。
相关推荐
8. **《Android 开发简介.htm》**:这是基础性的介绍,可能涵盖Android SDK安装、Android Studio的使用、布局设计、Activity生命周期、Intent机制等,为初学者提供一个全面的Android开发入门指南。 9. **《用 ...
在"Android开发-其它杂项"这个标签下,我们看出Disposer可能不是Android开发中的核心部分,但它是解决特定问题——即RxJava生命周期管理——的一种实用工具。这个标签强调了Disposer作为Android开发中一个辅助类库的...
例如,Android应用程序通常由Activity、Service、Broadcast Receiver和Content Provider等四大组件构成,而这些组件的交互方式和生命周期管理是开发者必须掌握的基本技能。 此外,Android的Intent机制是连接组件的...
内容可能涵盖从Android的基础概念,如Activity生命周期,Intent机制,到更高级的主题,如服务(Services)、广播接收器(Broadcast Receivers)和内容提供者(Content Providers)。它还可能包括UI组件的使用,如...
3. **ActivityManagerService**:这是Android系统服务的核心组件,负责管理所有应用的生命周期。软件管理器可能会与ActivityManagerService交互,以列出已安装的应用、启动应用或者卸载应用。 4. **Content...
文档详细介绍了Android应用的核心概念——活动(Activity)生命周期。活动是Android应用中一个独立的屏幕,生命周期包括创建、恢复、暂停、停止和销毁等状态。这部分内容也包括了服务(Service)的使用和广播接收器...
在文档中,你可以找到Activity、Service、BroadcastReceiver和ContentProvider等组件的生命周期图示,以及每个状态的回调方法,这对于正确处理应用的运行和暂停至关重要。 除此之外,Android API还涵盖了内容提供者...
这个合集详细地将官方的Android API文档翻译成了中文,提供了易读且全面的指南。 一、Android API概述 Android API是Google为开发Android应用提供的工具集合,涵盖了系统服务、UI组件、数据存储、网络通信、多媒体...
4. **Activity生命周期**:Activity的创建、启动、暂停、恢复和销毁等状态变化构成了其生命周期。开发者需要理解并妥善处理这些状态,以确保应用的稳定性和用户体验。 5. **Intent与意图过滤器**:Intent是Android...
总结,设计一个简易计算器应用涉及Android开发的基本要素,包括理解Activity生命周期、Intent的使用以及布局管理。通过实践这些知识点,开发者不仅可以提升Android开发技能,也能深入理解面向对象编程思想在实际项目...
1. Android生命周期:理解Activity、Fragment的生命周期,掌握如何在恰当的生命周期方法中进行操作。 2. BroadcastReceiver:用于接收系统广播,比如网络状态变化,可以触发相应的功能。 3. EventBus或RxBus:事件...
5. **Android生命周期**:每个Android组件都有其特定的生命周期,理解这些生命周期方法对于编写健壮、高效的代码至关重要。 6. **Android权限管理**:Android系统对应用程序的权限有严格的管理,开发者需要在...
《Android中文API合集(3)》是一本专注于Android开发的中文教程,旨在帮助开发者深入理解和熟练运用Android API。这本资源丰富的合集包含了大量示例代码和详细文档,是学习Android开发的理想参考资料。以下是对其中...
开发者需要熟悉Android的生命周期、活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)、内容提供者(ContentProvider)以及通知(Notification)等核心组件。此外,还要了解如何调用Android API...
Android的生命周期管理是开发者必须掌握的关键点。在阿拉丁天气源码中,我们可以看到Activity的onCreate()、onStart()、onResume()等方法,这些方法在不同阶段被调用,开发者需要在此处进行相应的操作,如初始化控件...
1. **Activity生命周期**:当设备旋转时,Android会调用Activity的生命周期方法,如`onSaveInstanceState()`来保存当前状态,然后调用`onDestroy()`和`onCreate()`来销毁并重建Activity以适应新的屏幕方向。...
10. **生命周期管理**:Activity、Service等组件都有各自的生命周期,开发者需要理解并正确处理各个生命周期方法,以保证应用的稳定性和资源效率。 通过《Android中文API合集(3)》的深入学习,开发者能够全面掌握...
7. **生命周期管理**:Android组件(如Activity)有自己的生命周期,需要开发者妥善管理。例如,当设备屏幕旋转或内存紧张时,Activity会暂停或重建,开发者必须正确处理这些情况。 8. **Intent机制**:Intent是...
此外,它还可能涉及对特定API或框架的源码分析,例如Android的Intent系统、Activity生命周期管理或View绘制机制。 综上所述,这个压缩包为Android开发者提供了一套实用的工具和指导,帮助他们快速掌握源码查询的...
Android官方基础文档是Android开发者入门和进阶的重要资源,它涵盖了Android系统的核心概念、开发环境设置、应用程序架构、用户界面设计、数据存储、网络通信、多媒体处理、性能优化等多个方面。以下将对这些知识点...