Context 从字面上理解就是上下文的意思, 在实际应用中它也确实是起到了管理 上下文环境中各个参数和变量的总用, 方便我们可以简单的访问到各种资源。
不同:维护的生命周期不同。Context 维护的是当前的 Activity 的生命周期, Application 维护的是整个项目的生命周期。
使用 context 的时候, 小心内存泄露, 防止内存泄露
4.2 Context 是什么它描述的是一个应用程序环境的信息,即上下文。
该类是一个抽象( abstract class )类, Android 提供了该抽象类的具体实 现类( ContextIml )。
通过它我们可以获取应用程序的资源和类, 也包括一些应用级别操作, 例如:启动一个 Activity ,发送广播,接受 Intent ,信息,等。
4.2.1 附加一张 Context 继承关系图 4.3 获取当前屏幕 Activity 的对象使用 ActivityLifecycleCallbacks
Android 如何获取当前Activity实例对象?
Activity的管理机制
面试官问这个问题,想看看大家对Activity了解是否深入:
什么是 ActivityRecord
什么是 TaskRecord
什么是 ActivityManagerService
4.5 什么是 Activity四大组件之一,通常一个用户交互界面对应一个 activity 。
activity 是 Context 的子类,同时实现了 window.callback 和 keyevent.callback ,可以处理与窗体用户交互的事件。
开发中常用的有 FragmentActivity 、ListActivity 、TabActivity( Android 4.0 被 Fragment 取代)
# 5. 进程 5.1 Android 进程优先级前台 / 可见 / 服务 / 后台 / 空
5.1.1 前台进程:Foreground process用户正在交互的 Activity( onResume() )
当某个 Service 绑定正在交互的 Activity
被主动调用为前台 Service( startForeground() )
组件正在执行生命周期的回调( onCreate() 、onStart() 、onDestory() )
BroadcastReceiver 正在执行 onReceive()
5.1.2 可见进程:Visible process我们的 Activity 处在 onPause()(没有进入 onStop() )
绑定到前台 Activity 的 Service
5.1.3 服务进程:Service process简单的 startService() 启动。
5.1.4 后台进程:Background process对用户没有直接影响的进程 --- Activity 处于 onStop() 的时候。
android:process=":xxx"
5.1.5 空进程:Empty process不含有任何的活动的组件。( Android 设计的,处于缓存的目的,为了第二次启动更快,采取的一个权衡)
5.2 可见进程可见进程指部分程序界面能够被用户看见,却不在前台与用户交互的进程。例如,我们在一个界面上弹出一个对话框(该对话框是一个新的 Activity ),那么在对话框后面的原界面是可见的,但是并没有与用户进行交互,那么原界面就是可见进程。
一个进程满足下面任何一个条件都被认为是可视的:
寄宿着一个不是前台的活动,但是它对用户仍可见(它的 onPause() 方法已经被调用)。举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。
寄宿着一个服务,该服务绑定到一个可视的活动。
一个可视进程被认为是及其重要的且不会被杀死,除非为了保持前台进程运行。
5.3 服务进程服务进程是通过 startService() 方法启动的进程,但不属于前台进程和可见进程。例如,在后台播放音乐或者在后台下载就是服务进程。
系统保持它们运行,除非没有足够内存来保证所有的前台进程和可视进程。
5.4 后台进程