第3章 创建应用程序和Activity
3.2 应用程序Manifest文件简介
1. 在Manifest文件中,使用installLocation属性,可以指定是否允许(或者首选)将应用程序安装到外部存储器(通常是SD卡)而不是内部存储器上。为此,可以将其值指定为preferExternal货auto,使用前者时,只要有可能就会把应用程序安装到外部存储器上,后者测要求系统决定。
2. android:targetSdkVersion属性用于指定你在开发和测试应用程序时使用的平台。设置目标SDK版本会告诉系统不需要为支持该版本而进行任何向前和向后兼容性更改。
如果targetSdkVersion版本和运行设备的API版本一致时,运行效率可能会高一些。这本书中关于Manifest文件的配置选项写的很详细,等需要使用的时候可以再翻回来查看。
3.5 Android应用程序生命周期
1. 当两个应用程序有相同的优先级时,在较低优先级状态运行时间最长的进程将会首先被终止。进程的优先级也受到进程间依赖性的影响。如果一个应用程序依赖于第二个应用程序所提供的Service或者Content Provider,那么第二个应用程序至少会拥有与它所支持的这个应用程序相同的优先级。
应用程序终止顺序的优先级:1.活动进程(关键优先级)->2.可见进程(高优先级)->3.启动服务进程(高优先级)->4.后台进程(低优先级)->5.空进程(低优先级)
3.7 Android Application类简介
1. 每次应用程序运行时,应用程序的Application类都保持实例化状态。通过扩展Application类,可以完成以下3个工作:
(1). 对Android运行时广播的应用程序级事件(如低内存)作出相应。
(2). 在应用程序组件之间传递对象
(3). 管理和维护多个应用程序组件使用的资源
在创建新的Application类后,必须使用一个name属性在Manifest的application节点中注册它。
Application类的几个常用回调方法:
(1). onCreate:在创建应用程序是调用
(2). onLowMemory:当系统处于资源匮乏时,具有良好行为的应用程序可以释放额外的内存。这个方法一般只会在后台进程已经终止,但是前台应用程序仍然缺少内存时调用。可以重写这个处理程序来清空缓存或者释放不必要的资源。
(3). onTrimMemory:作为onLowMemory的一个特定与应用程序的替代选择,在Android4.0(API level 13)中引入,当运行时决定当前应用程序应该尝试减少其内存开销时(通常在它进入后台时)调用。
(4). onConfigurationChanged:与Activity不同,在配置改变时,应用程序对象不会被终止和重启。如果应用程序使用的值依赖于特定的配置,则重写这个方法来重新加载这些值,或者在应用程序级别处理配置改变。
3.8 深入讨论Android Activity
1. 如果Activity被运行时意外终止,onCreate方法接受一个包含UI状态的Bundle对象,该对象是在最后一次调用onSaveInstanceState时保存的。应该使用这个Bundle将UI恢复为上一次的状态,这里既可以通过onCreate方法,也可以通过重写onRestoreInstanceState来实现。
onStop方法应该用来暂停或者停止动画、线程、传感器监听器、GPS查找、定时器、Service或者其他专门用于更新用户界面的进程。当界面再次可见的时候,可以使用onStart(或者onRestart)方法来恢复或者重启这些进程。
onStart/onStop方法也可以用来注册和注销那些专门用来更新用户界面的Broadcast Receiver。
在onPause之前,是对onSaveInstanceState的调用。这个方法提供了把Activity的UI状态保存在一个Bundle中的机会,这个Bundle对象将会被传递给onCreate和onRestoreInstanceState方法,可以使用onSaveInstanceState来保存UI状态(例如,复选框状态、用户焦点和已经出入但是还没有提交的用户输入),从而保证当Activity下次变为活动状态时,它能够呈现出与之前相同的UI,在活动生存期内,可以安全的假设onSaveInstanceState和onPause方法会在进程终止之前被调用。
onResume方法可以是轻量级的。这里将不需要重新加载UI状态,因为当要求加载UI状态的时候,它会由onCreate和onRestoreInstanceState方法处理。使用onResume可以重新注册任何可能使用onPause停止的Broadcast Receiver或者其他进程。