2.2.1 活动(Activity)
一个Activity通常展现为一个可视化的用户界面。例如,一个Activity可能展现为一个用户可以选择的菜单项列表或者展现一些图片以及图片的标题。一个消息服务应用程序可能包含一个显示联系人列表的Activity,一个编写信息的Activity,以及其它一些查看信息和修改应用程序设置的Activity。虽然这些Activity一起工作,共同组成了一个应用程序,但每一个activity都是相对独立的。每一个Activity都是Activity(android.app.Activity)的子类。
几乎所有的Activity都要和用户打交道,所以Activity类创建了一个窗口,软件开发人员可以通过setContentView(View)方法把UI放到Activity创建的窗口中。
Activity类位于android.app包中,继承体系如下图2.1所示:
图2.1 类的继承图
Activity类是Android应用生命周期的重要部分,而且Activity的启动方式及Activity间的调度关系是Android平台应用模型的一个重要组成部分。在Android操作系统中,Activity被一个Activity栈所管理。当一个新的Activity启动时,其被放置到栈顶成为运行中的Activity,则前一个Activity被保留在栈中而不是前台,直到新的Activity退出为止。在栈的管理中,Activity有四种具有本质区别的状态。下图2.2显示了Activity重要的状态转换,矩形框表示Activity在状态转换之间的回调方法,应用服务开发人员可以重载这些方法以便执行相关的操作,椭圆形框表示Activity所处的状态。
图2.2 Activity生命周期
Activity的四个状态:
(1).活动状态Running:
当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于运行状态,同一个时刻只会有一个Activity 处于活动(Active)或运行
(2).暂停状态Pause:
当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态,它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉
(3).停止状态Stop:该Activity不可见,失去焦点。
(4).销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束。
Activity的状态转换:
(1).Activity从创建到进入运行态所触发的事件
onCreate()-->onStart()-->onResume();
(2).从运行状态到停止状态所触发的事件
onPause()-->onStop();
(3).从停止状态到运行态所触发事件
onRestart()-->onStart()-->onResume();
(4).从运行态到暂停状态所触发事件
onPause();
(5).从暂停状态到运行态所触发事件
onResume();
2.2.2 服务(Service)
一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity 会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service 一直执行,直到这个service 运行结束。
Service使用步骤如下
(1)继承service类;
(2)AndroidManifast.xml配置清单文件中<application>节点里对服务进行配置;
(3)启动服务;
有两种启动服务的方法:
第一种:通过startService()方法启动的服务于调用者没有关系,即使调用者关闭了,服务仍然运行想停止服务要调用Context.stopService(),此时系统会调用onDestory(),使用此方法启动时,服务首次启动系统先调用服务的onCreate()-->onStart(),如果服务已经启动再次调用只会触发onStart()方法。 基于Android的码表程序的实现(4):http://www.751com.cn/jisuanji/lunwen_8538.html