课后练习
单项选择题
每题只有一个正确答案。
-
使用
startService()启动的服务,在客户端解除绑定后通常会怎样?( )A. 服务立即停止
B. 服务仍可继续运行,直到被明确停止
C. 服务自动转为前台服务
D. 服务只能再运行一秒
-
本地绑定服务通过什么对象向客户端提供访问服务的入口?( )
A.
IntentB.
BundleC.
IBinderD.
Handler -
使用
MediaPlayer准备在线音频时,调用prepareAsync()的主要作用是什么?( )A. 在准备完成前暂停主线程
B. 异步准备音频,准备完成后通过回调继续处理
C. 让播放器自动重复播放
D. 释放播放器占用的资源
-
更换
MediaPlayer的音频来源前调用reset(),主要是为了什么?( )A. 清除播放器当前状态,便于设置新的音频来源
B. 立即开始播放新的音频
C. 保留当前播放位置
D. 关闭应用的网络连接
-
不再使用
MediaPlayer时,应该调用哪个方法释放它占用的资源?( )A.
pause()B.
reset()C.
release()D.
seekTo() -
MutableStateFlow和StateFlow的常见分工是什么?( )A. 两者都只能读取状态
B.
MutableStateFlow用于更新状态,StateFlow用于只读地观察状态C.
StateFlow用于更新状态,MutableStateFlow用于只读地观察状态D. 两者都只能在主线程创建
-
状态已经发生变化后,新的收集者开始收集
StateFlow,会先得到什么?( )A. 创建
StateFlow时的初始值B. 只有之后发生变化时才会得到状态
C. 所有历史状态的副本
D. 当前保存的最新状态
-
使用
SupervisorJob管理多个协程时,其中一个协程发生异常会怎样?( )A. 其他协程一定会同时取消
B. 整个应用会自动关闭
C. 出错的协程会自动重新启动
D. 其他协程不会因此自动取消,但异常仍需处理
-
Dispatchers.Main作为协程的默认调度器时,协程代码通常在哪个线程运行?( )A. Android 主线程
B. 新建的子线程
C. 文件读写专用线程
D. 由系统随机选择的线程
-
用户拖动进度条时,为什么要暂时跳过自动进度刷新,并在松开后再执行跳转?( )
A. 避免自动刷新覆盖用户选择的位置,松开后再跳到目标位置
B. 让播放器在拖动期间自动切换歌曲
C. 让进度条最大值随拖动改变
D. 避免播放器读取音频来源
参考答案
| 题号 | 答案 | 考查知识点 |
|---|---|---|
| 1 | B | 已启动服务与绑定关系 |
| 2 | C | 本地服务绑定与 IBinder |
| 3 | B | 在线音频的异步准备 |
| 4 | A | 重置播放器状态 |
| 5 | C | 释放播放器资源 |
| 6 | B | 可变状态流与只读状态流 |
| 7 | D | StateFlow 保存并提供最新状态 |
| 8 | D | SupervisorJob 对协程异常的处理方式 |
| 9 | A | Dispatchers.Main 的默认线程 |
| 10 | A | 进度条拖动与播放位置同步 |