Android术语包括Context、Ativity、Intent、Service这四种重要术语。
4.1 Context(中央控制中心)
作用:管理应用程序特定的配置细节,以及应用程序范围的操作和数据,使用Context来访问设置资源可以在多个Activity实例中实现共享。
获取:Context context = getApplicationContext();
使用: 1. 通过getResources()方法来获取资源实例
2. 访问应用程序首选项,经常用来存放配置
3. 访问其他应用程序的功能
1)运行Activity实例
2)获取应用程序所带组件(asset)
3)获取一个系统服务
4)管理私有的应用程序文件、目录和数据库
5)检查和使用应用程序权限
注意:Activity继承自Context,所以有时也可以替代对应应用程序Context的显示获取。但是,并不是所有的情况下都可以使用ActivityContext的,有可能会导致内存溢出。例如:我们经常使用Context传递参数的时候,都是用Activity的this实例来传递,这种情况传递过多会出现内存溢出,解决方法就是使用getApplicationContext()来获取Context传递过去。
4.2 Activity
作用:任何一个Android应用程序的核心组成部分
生命周期:并不是每个Activity都是在当前活动可见的,每个应用程序在被用户使用的过程中,只有一个Activity是当前用户可见并可操作的(即获取到焦点的)。而一旦开启另一个活动Activity,那么之前的那个Activity就会被Android操作系统自动处理,压入Activity栈中。而这个新压入的栈完成工作后,则会被从栈顶移除。而之前的Activity又会回到栈顶,成为活动Activity。
图4.2.1 Activity生命周期内的一些列回调
回调函数的调用时机和调用目的:
回调函数 | 描述 | 调用时机 | 调用目的 |
onCreate() | 初始化静态 Activity | 一个Activity首次运行的时候调用 | 仅有一个参数,Bundle对象。对于首次运行的Activity来说为空。如因内存原因被终止的Activity则Bundle包含之前的Activity状态信息。用来尽心数据绑定。 |
onResume() | 初始化和接受Activity数据 | Activity为前台进程的时候调用 | 获取Activity运行所需资源。适合于启动音频、视频和动画。 |
onPause() | 停止、保存和释放Activity数据 | Activity接受到在栈中被下移的通知 | 终止在onResume中播放的所有音频、视频和动画。同时,必须接触某些资源,例如数据库。保存未提交的数据,这是Activity在后台的最后一个机会能够做这些事情。 |
被销毁: 1. 在低内存下,Android会终止任何非活动Activity
2. onPause()被调用,则onStop()和onDestory()不会被调用
3. onPause()释放越多的资源,转入后台的Activity被终止可能行越小
4. 终止Activity不会从栈中移除,而是将其销毁钱状态存入Bundle。前提为Activity实现了它,并且使用了onSaveInstanceState()方法保存自定义数据。
避免被销毁:1. 使用onSaveInstanceState()将Acitvity状态存储至Bundle对象
注释:该方法不一定会生效,所以对于关键数据最好在onPause()中调用。至于返回这个状态,则只需要利用onRestoreInstanceState()方法调用Bundle中的信息即可。
2. 在onDestory()方法中保存数据
注释:Activity自然完成了它的生命周期,或者由于资源占用的原因被Android系统终止的时候调用onDestory(),这时候可以将未保存的数据保存下来。
Intent跳转:1. 只出现一次的跳转,例如启动动画
注释:startActivity()和finish()方法
2. 暂时性跳转,只是为了等待一个结果
注释:startActivityForResult()和onActivityResult()方法
跳转实现: 1. 使用类名运行
注释:显示调用Intent,譬如:
startActivity(newIntent
(getApplicationContext(),TestActivity.class))
2. 使用Action
注释:Uri number = Uri.parse(tel:11111);
Intentintent = new Intent(Intent.ACTION_DIAL, number);
startActivity(dial);
上述是调用系统电话功能
3. 传递信息
注释:使用Intent中的putExtra方法
注意:Android约定用于附加信息的键名必须包含一个包前缀
服务: 1. 没有用户界面的Activity
服务作用: 1. 天气、邮件等社交网络类。
2. 照片和多媒体应用,用于数据的同步
3. 视频编辑应用,添加繁琐的操作到服务,避免性能影响
4. 新闻预载入,提高性能
5. 经验规则:某个任务需要一个辅助线程,但可能会影响应用程序的响应性和性能,这个时候可以考虑使用服务来处理这一任务。
4.3 小结
Activity的一些重要概念。