Starting an Activity [启动一个Activity]
- 不像其他编程范式一样:程序从main()方法开始启动。Android系统根据生命周期的不同阶段唤起对应的回调函数来执行代码。系统存在启动与销毁一个activity的一套有序的回调函数。
- 这一个课会介绍那些生命周期中最重要的回调函数,并演示如何处理启动一个activity所涉及到的回调函数。
Understand the Lifecycle Callbacks [理解生命周期的回调]
- 在一个activity的生命周期中,系统会像金字塔模型一样去调用一系列的生命周期回调方法。Activity生命周期的每一个阶段就像金字塔中的台阶。当系统创建了一个新的activity实例,每一个回调函数会向上一阶的移动activity状态。金字塔顶端意味着activity是跑在最前端的并且用户可以与它进行交互。
- 当用户开始离开这个activity, 为了卸载这个activity,系统会调用其它方法来向下一阶移动activity状态。在某些情况下,activity会隐藏在金字塔下等待 (例如当用户切换到其他app), 这个时候activity可以重新回到顶端 (如果用户回到这个activity) 并且恢复用户离开时的状态。
- Figure 1.下面这张图讲解了activity的生命周期:[显然,这个金字塔模型要比之前Dev
Guide里面的生命周期图更加容易理解,更加形象]
- 根据你的activity的复杂度,你也许不需要实现所有的生命周期方法。然而,你需要知道每一个方法的功能并确保你的app能够像用户期望的那样执行。如何实现一个符合用户期待的app,你需要注意下面几点:
-
当使用你的app的时候,不会因为有来电通话或者切换到其他app而导致程序crash。
-
当用户没有激活某个组件的时候不要消耗宝贵的系统资源。
-
当离开你的app并且一段时间后返回,不要丢失用户的使用进度。
-
当设备发送屏幕旋转的时候,不会crash或者丢失用户的使用进度。
-
在下面的课程中会介绍上图所示的几个生命状态。然而,其中只有三个状态是静态的,这三个状态下activity可以存在一段比较长的时间。[其它几个状态会很快就切换掉,停留的时间比较短暂]
-
Resumed:在这个状态,activity是在最前端的,用户可以与它进行交互。(通常也被理解为"running" 状态)
-
Paused:在这个状态,activity被另外一个activity所遮盖:另外的activity来到最前面,但是半透明的,不会覆盖整个屏幕。被暂停的activity不会再接受用户的输入且不会执行任何代码。
-
Stopped:在这个状态, activity完全被隐藏,不被用户可见。可以认为是在后台。当stopped, activity实例与它的所有状态信息都会被保留,但是activity不能执行任何代码。
- 其它状态 (Created and Started) 都是短暂的,系统快速的执行那些回调函数并通过执行下一阶段的回调函数移动到下一个状态。也就是说,在系统调用
onCreate()
,
之后会迅速调用onStart()
, 之后再迅速执行onResume()
.
- 上面就是基本的activity生命周期。
Specify Your App's Launcher Activity [指定你的程序首次启动的Activity]
- 如果你的程序中没有一个activity声明了
MAIN
action 或者LAUNCHER
category
,那么在设备的主界面列表里面不会呈现你的app图标。
Create a New Instance [创建一个新的实例]
- 大多数app都包括许多不同的activities,这样使得用户可以执行不同的动作。无论这个activity是创建的主activtiy还是为了响应用户行为而新创建的,系统都会调用新的activity实例中的onCreate()方法。
- 你必须实现onCreate()方法来执行程序启动所需要的基本逻辑。
- 例如:下面的
onCreate()
方法演示了为了建立一个activity所需要的一些基础操作。如,声明UI元素,定义成员变量,配置UI等。[onCreate里面尽量少做事情,避免程序启动太久都看不到界面]
- 一旦结束
onCreate
操作,系统会迅速调用onStart()
与onResume()
方法。你的activity不会在Created
或者 Started 状态停留。技术上来说,activity在onStart()被调用后会开始被用户可见,但是onResume()
会迅速被执行使得activity停留在Resumed状态,直到一些因素发生变化才会改变这个状态。 例如接受到一个来电,用户切换到另外一个activity,或者是设备屏幕关闭。
- 在后面的课程中,你讲看到其他方法是如何使用的,
onStart()
与onResume()
在用户从Paused
or Stopped 状态中恢复的时候非常有用。
- Note:
onCreate()
方法包含了一个参数叫做savedInstanceState
,这将会在后面的课程:重新创建一个activity的时候涉及到。
Destroy the Activity [销毁Activity]
- activity的第一个生命周期回调函数是
onCreate()
, 它最后一个回调是onDestroy()
.
系统会执行这个方法作为你的activity要从系统中完全移除的信号。
- 大多数 apps 并不需要实现这个方法,因为局部类的references会被destroyed并且你的activity应该在
onPause()
与onStop()
中执行清除的操作。
然而,如果你的activity包含了你在onCreate时创建的后台线程,或者是其他有可能导致内存泄漏的资源,你应该在OnDestroy()时杀死他们。
学习自:http://developer.android.com/training/basics/activity-lifecycle/starting.html,请多指教,谢谢!
转载请注明出处:http://blog.csdn.net/kesenhoo,谢谢配合!
分享到:
相关推荐
Bumping基础培训资料-Bumping-Basic-Training-Material
android-basic-activity
最新 instantclient-basic-linux.x64-11.2.0.4.0最新 instantclient-basic-linux.x64-11.2.0.4.0最新 instantclient-basic-linux.x64-11.2.0.4.0最新 instantclient-basic-linux.x64-11.2.0.4.0最新 instantclient-...
android-Camera2Basic-master
1Fanuc-Robot-Basic-Training-FANUC机器人培训教材(基本).ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
Fanuc-Robot-Basic-Training-FANUC机器人培训教材(基本).ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
Google Play game services - Android Samples Copyright (C) 2014 Google Inc. Contents These are the Android samples for Google Play game services. BasicSamples - a set of basic samples, including a ...
Version 12.2.0.1.0 Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI ...oracle-instantclient12.2-basiclite-12.2.0.1.0-1.x86_64.rpm (52,826,628 bytes) (cksum - 888077889)
oracle 数据库驱动 instantclient-basic-windows.x64-12.2.0.1.0.zip 和 instantclient-basiclite-windows.x64-12.2.0.1.0.zip
instantclient-basic-nt-19.8.0.0.0dbru.zip(我电脑上用的是这个版本连接的Oracle11g) 3、配置window操作系统环境变量(新建以下两个变量) 此电脑(右键)→属性→高级系统设置→环境变量→系统环境变量→新建 ...
instantclient-basic-nt-11.2.0.2.0
spring-android-basic-auth
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm --基础包,为了运行OCI、OCCI、JDBC-OCI 这几个应用程序; oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm --补充包/文件,是为了运行sql*plus...
oracle 数据库驱动 instantclient-basiclite-windows.x64-12.2.0.1.0.zip
instantclient-basic-win-x86-64-11.1.0.7.0,oracle数据库连接oracle9i及以上版本
下载对应版本instantclient-basic-win-x86-64-11.2.0.1.0.zip包 这里对应的也是64位的instantclient包,将其完全解压到Navicate Premium安装目录,删除原有的installclient_10_2文件夹,其中最关键的是此文件夹中的...
sudo alien -i /home/ubuntu/oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm sudo alien -i /home/ubuntu/oracle-instantclient-devel-21.1.0.0.0-1.x86_64.rpm sudo alien -i /home/ubuntu/oracle-instant...
oracle-instantclient19.6-basic-19.6.0.0.0-1.x86_64.rpm oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm
bomgar 远程计算机桌面软件培训文档,该计算机桌面软件培训文档中有登录,安装与客户使用的引导 BOMGAR Basic Training for IT Analysts
第三节 暴力破解 - HTTP Basic认证-01