通过startService()方法启动Service和bindService()方法启动Service有一些不同,startService()方法启动Service之后,就和调用者没有关系了,即使启动它的activity关闭了,Service也仍在运行,停止Service要调用Context.stopService()方法,此时系统在注销Service前会调用onDestroy(),使用此方法启动Service时,先调onCreate()方法初始化,然后调用方法onStartCommand(),如果服务已经启动再次调用只会触发onStartCommand()方法。
使用bindService()启动的服务与调用者绑定,先调用服务的onCreate()-->onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用方activity退出时Service也会自动退出,系统会调用服务的onUnbind()-->onDestory(),主动解除绑定可使用Contex.unbindService(),系统会依次调用onUnbind()-->onDestory();
Content Provider数据源组件 :
在Android中,本地应用的数据库等资源文件是具有保密性的,如果要和其它应用实现共享,需要Android提供的一个访问接口,即Content Provider数据源组件。数据源组件并不包含特定的功能逻辑,它只是为应用程序资源的相互访问提供了一个便利的接口。
数据源组件继承自抽象类ContentProvider,要实现数据源组件的方法首先需要重写抽象类ContentProvider的方法。数据源组件的设计是符合数据库的设计概念的,所以它有着良好的保密性,而且能通过全局唯一标识URI快速准确地找到Activity要找的资源。ContentProvider有着很广泛的用途。
2.3 Activity生命周期:
组件的生命周期指的是组件从被构造运行开始,直至被销毁的整个时间段内,组件的状态变化。Activity组件的生命周期与其调用的函数过程息息相关。Activity界面组件可以分成三类,分别是:
前台界面组件:指的是和用户进行交互的界面,它的进程优先级最高,一般系统不会释放掉它的内存。
可视界面组件:指的是已经失去了焦点,用户不能直接和界面进行交互,但是仍然是可见的,并没有进入后台运行。
后台界面组件:指的是用户无法交互无法看到的界面,它可能是上一个Activity,被放在任务栈当中,在后台运行。下次返回不会再运行onCreate()方法。
界面组件在三种状态进行切换时,Android会自动调用相关的函数运行。在Eclipse当中进行测试的时候,可以重写Activity这些方法,通过输出语句来观看Log的输出情况。进而了解整个Activity的函数调用顺序。
图2.5描述了界面组件和activity函数的关系。当组件被系统构造运行时,Activity的onCreate方法最先被调用,在该组件销毁前,onDestroy函数被调用。整个activity的生命周期,从图上表示就是从onCreate到onDestroy这一过程。
Activity的onCreate最先被调用,主要用于加载数据和绑定控件的工作,每次启动程序只调用一次,然后执行onStart方法,onStrat方法在界面可交互状态前调用。当onResume方法调用时,界面从可视状态转变成前台状态,这时候界面是可交互的。onPause方法调用时,是从前台状态转变成可视状态的时候,比如Alert Dialog对话框,透明Activity等,这时候界面对用户是不可交互的,但是仍然可见。onStop方法是在Activity进入后台状态时调用的。它的调用一般在onPause的方法之后。Activity结束时,系统会在销毁Activity前调用onDestroy方法,用来做释放内存的工作。 基于Android的手机信息查询助手中软件查询信息模块设计(4):http://www.youerw.com/jisuanji/lunwen_20597.html