Android移动应用开发实用教程教学课件ppt作者夏辉第2章习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章习题答案
1. 选择题
(1) .B (2).A (3).C (4).AD (5).C (6).B
2. 简答题
(1)简述Activity生命周期及七个生命周期函数
Activity是人机交互的重要组件,Activity是有生命周期的,参见文档图
Protected void onCreate();
当创建activity时被调用,主要完成一些初始化工作,例如设置布局文件,对按钮绑定监听器,加载savedInstanceState参数,
protected void onStart();
当Activity被用户可见时调用
protected void onRestart();
重新启动Activity时调用,该活动仍在栈中,而不是启动新的活动
protected void onResume()
Activity开始与用户交互时调用,即该activity获得了用户的焦点(无论是启动还是重新启动一个活动,该方法总是被调用)
protected void onPause();
Activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的
protected void onStop();
Activity被停止并转为不可见状态时调用,如果第2个activity没有完全遮挡第1个activity,则不调用 protected void onDestroy();
Activity被完全从系统内存中移除时调用
(2)Intent可以实现界面间切换,可以包含动作和动作数据,是连接四大组件的纽带。
Intent 的投递有哪两种?请分别做简单介绍?
对于Activity、Service和BroadcastReceiver这三种组件,有独立的传送intent的机制:1.触发新Activity或者让现有的Activity执行新操作
Intent可以激活一个新的Activity,或者让一个现有的Activity执行新的操作。
可以通过调用Context.startActivity()或Context.startActivityForResult()方法来完成此功能。
2.触发新Service或者向已有服务传递新请求
开启服务或向已有服务发送请求也是由Intent类完成的。
3.触发BroadcastReceiver
分别通过Context.sendBroadcast()、Context.sendOrderedBroadcast()和Context. sendStickyBroadcast()三个方法来发送BroadcastIntent。
在每种情况下,Android系统查找合适的activity、service、broadcastReceiver来响应Intent,如果有必要的话,初始化他们。
这些消息系统之间没有重叠,即广播意图仅会传递给广播接收者,而不会传递活动或服务,反之亦然。
(3)实现Service有哪2种方式,分别解释每一种方式需要复写的生命周期函数。
定义一个Service类比较简单,只要继承Service类,实现其生命周期中的方法就可以了。
一个定义好的Service必须在AndroidManifest.xml配置文件中通过<service>元素声明才能使用。
可以调用startService( )启动一个Service或者使用bindService()方法来绑定一个存在的Service.onBind(Intent intent):是必须实现的一个方法,返回一个绑定的接口给
Service。
onCreate():第一次被创建时,由系统调用。
onStartCommand():当通过startService()方法启动Service时,该方法被调用。
onDestroy():销毁service。
(4)采用Context.startService()方法启动服务,需要实现哪几个生命周期函数,并介绍每一种函数的调用时机与作用?
onCreate()--> onStart()--> onDestroy()
onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService(),服务也只被创建一次。
onStartCommand( ) 只有采用Context.startService()方法启动服务时才会回调该方法。
该方法在服务开始运行时被调用。
多次调用startService()方法尽管不会多次创建服务,但onStartCommand( ) 方法会被多次调用。
service的活动生命周期是在onStartcommand()之后,这个方法会处理通过startServices()方法传递来的Intent对象。
音乐service可以通过开打intent对象来找到要播放的音乐,然后开始后台播放。
onDestroy()该方法在服务被终止时调用。
(5)Android系统中,BroadcastReceiver组件有2种注册方式,一种是静态注册,另一种是动态注册,那么什么时候需要动态注册?动态注册用哪个方法实现,需要什么参数?解除动态注册的方法是什么?请举例实现其核心代码?
registerReceiver(BroadcastReceiver,intentFilter);
这个函数的作用就是将一个BroadcastReceiver注册到应用程序当中,这个函数接收两个参数,第一个参数是需要注册的BroadcastReceiver对象,第二个是一个IntentFilter。
第一个参数是非常容易理解的,第二个参数的作用是定义了哪些Intent才能触发这个注册的BroadcastReceiver对象。
类似于前面所讲解的<intent-filter>标签的作用;
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(String);
//为BroadcastReceiver指定action,使之用于接收同action的广播
registerReceiver(BroadcastReceiver,intentFilter);
解除动态注册广播接收器
unregisterReceiver(BroadcastReceiver);
用于解除BroadcastReceiver的绑定状态。
一旦解除完成,响应的BroadcastReceiver 就不会再接收系统所广播的Intent了。