安卓开发选择题
安卓开发选择题
以下哪个方法用于避免内存泄漏?
A. 及时释放资源
B. 使用 WeakReference
C. 避免非静态内部类持有 Activity 引用
D. 以上都是
答案:D
以下哪个工具用于分析应用的内存使用情况?
A. Android Profiler
B. Lint
C. DDMS
D. Monkey
答案:A
解析:Android Profiler 提供实时内存、CPU、网络使用情况的监控。
以下哪个方法用于优化 ListView 的性能?
A. 使用 ViewHolder 模式
B. 复用 ConvertView
C. 避免在 getView () 中执行耗时操作
D. 以上都是
答案:D
解析:ViewHolder 模式减少 findViewById () 调用,复用 ConvertView 减少对象创建。
以下哪个方法用于加密敏感数据?
A. AES 加密
B. RSA 加密
C. SHA 哈希
D. 以上都是
答案:D
解析:AES 用于对称加密,RSA 用于非对称加密,SHA 用于哈希运算。
以下哪个方法用于检测应用的 ANR(应用无响应)?
A. 查看 logcat 中的 ANR 日志
B. 使用 StrictMode
C. 监控主线程耗时操作
D. 以上都是
答案:D
解析:ANR 通常由主线程耗时操作引起,可通过日志和 StrictMode 检测。
以下哪个方法用于实现应用内更新?
A. 检查服务器版本号
B. 下载 APK 文件
C. 调用系统安装界面
D. 以上都是
答案:D
解析:应用内更新需对比版本、下载安装包并提示用户安装。
以下哪个方法用于实现应用的通知功能?
A. NotificationCompat.Builder
B. NotificationManager.notify()
C. PendingIntent
D. 以上都是
答案:D
解析:通过 NotificationCompat 构建通知,NotificationManager 发送。
以下哪个方法用于实现应用的崩溃日志收集?
A. 注册 UncaughtExceptionHandler
B. 使用第三方工具(如 Firebase Crashlytics)
C. 捕获异常并上传服务器
D. 以上都是
答案:D
解析:自定义异常处理器或集成第三方工具可收集崩溃日志。
一、Activity(25 题)
1. 以下哪个方法在 Activity 第一次创建时调用?
A. onStart()
B. onCreate()
C. onResume()
D. onRestart()
答案:B
解析:onCreate () 用于初始化 Activity 的布局和数据,只在 Activity 首次创建时调用一次。其他方法中,onStart () 在 Activity 可见时调用,onResume () 在 Activity 可交互时调用,onRestart () 在 Activity 从停止状态重启时调用。
来源:牛客博客《Android 面试题集》
2. Activity 的启动模式中,哪种模式会复用栈顶的实例?
A. standard
B. singleTop
C. singleTask
D. singleInstance
答案:B
解析:singleTop 模式下,若目标 Activity 位于任务栈顶,则直接复用;否则创建新实例。singleTask 模式会复用栈内已有的实例并清除其上层 Activity,singleInstance 模式会创建独立任务栈。
来源:掘金《Android 四大组件面试题》
3. 以下哪个方法用于启动一个需要返回结果的 Activity?
A. startActivity()
B. startService()
C. startActivityForResult()
D. sendBroadcast()
答案:C
解析:startActivityForResult () 启动 Activity 后,通过重写 onActivityResult () 方法处理返回数据。startActivity () 用于普通启动,startService () 启动服务,sendBroadcast () 发送广播。
来源:CSDN《Android 笔试题大全》
4. 横竖屏切换时,默认情况下 Activity 的生命周期会如何变化?
A. 仅调用 onConfigurationChanged ()
B. 重新调用 onCreate ()
C. 无变化
D. 调用 onSaveInstanceState ()
答案:B
解析:默认情况下,屏幕旋转会导致 Activity 销毁并重建,依次调用 onPause ()→onStop ()→onDestroy ()→onCreate ()→onStart ()→onResume ()。若设置android:configChanges="orientation|screenSize"
,则仅调用 onConfigurationChanged ()。
来源:CSDN《Android 移动开发基础案例教程》
5. 以下哪个属性用于设置 Activity 的启动模式?
A. android:launchMode
B. android:taskAffinity
C. android:screenOrientation
D. android:configChanges
答案:A
解析:在 AndroidManifest.xml 中通过android:launchMode
设置 Activity 的启动模式,可选值包括 standard、singleTop、singleTask、singleInstance。taskAffinity 用于指定任务栈归属,screenOrientation 设置屏幕方向,configChanges 控制配置变化时的行为。
来源:掘金《Android 基础篇面试题》
6. Activity 的生命周期中,哪个方法在 Activity 不可见时调用?
A. onPause()
B. onStop()
C. onDestroy()
D. onResume()
答案:B
解析:onStop () 在 Activity 完全不可见时调用,例如跳转到其他 Activity 或锁屏。onPause () 在 Activity 失去焦点但仍可见时调用,onDestroy () 在 Activity 销毁前调用。
来源:牛客博客《Android 面试题集》
7. 以下哪个方法用于保存 Activity 的临时状态?
A. onSaveInstanceState()
B. onRestoreInstanceState()
C. onPause()
D. onStop()
答案:A
解析:onSaveInstanceState () 在 Activity 被意外销毁(如内存不足)前调用,将数据保存到 Bundle 中。onRestoreInstanceState () 在 Activity 重建后恢复数据,通常与 onCreate () 配合使用。
来源:CSDN《Android 笔试题大全》
8. 以下哪个方法用于在 Activity 之间传递数据?
A. Intent.putExtra()
B. Bundle.putString()
C. SharedPreferences.edit()
D. SQLiteDatabase.insert()
答案:A
解析:通过 Intent 的 putExtra () 方法传递基本数据类型或 Parcelable 对象。Bundle 通常作为 Intent 的附加参数使用,SharedPreferences 用于轻量级存储,SQLite 用于数据库操作。
来源:CSDN《Android 笔试题大全》
9. Activity 的启动模式中,哪种模式会在单独的任务栈中运行?
A. standard
B. singleTop
C. singleTask
D. singleInstance
答案:D
解析:singleInstance 模式下,Activity 会在独立的任务栈中运行,与其他 Activity 隔离。singleTask 模式在当前任务栈中复用实例,singleTop 模式复用栈顶实例。
来源:掘金《Android 四大组件面试题》
10. 以下哪个方法用于关闭当前 Activity?
A. finish()
B. onDestroy()
C. stopActivity()
D. close()
答案:A
解析:调用 finish () 方法结束当前 Activity,触发其生命周期方法 onPause ()→onStop ()→onDestroy ()。onDestroy () 是生命周期方法,由系统调用。
来源:牛客博客《Android 面试题集》
11. 以下哪个方法用于获取 Activity 的布局视图?
A. setContentView()
B. findViewById()
C. inflate()
D. addView()
答案:A
解析:setContentView () 用于设置 Activity 的布局文件。findViewById () 用于查找布局中的控件,inflate () 用于动态加载布局,addView () 用于向 ViewGroup 添加子视图。
来源:CSDN《Android 笔试题大全》
12. 以下哪个方法用于处理 Activity 返回的数据?
A. onActivityResult()
B. onNewIntent()
C. onResume()
D. onStart()
答案:A
解析:通过 startActivityForResult () 启动的 Activity 返回数据时,会调用 onActivityResult () 方法。onNewIntent () 在 Activity 接收到新 Intent 时调用,例如 singleTop 模式下栈顶复用。
来源:CSDN《Android 移动开发基础案例教程》
13. Activity 的生命周期中,哪个方法在 Activity 从后台回到前台时调用?
A. onRestart()
B. onStart()
C. onResume()
D. onPause()
答案:A
解析:onRestart () 在 Activity 从停止状态重新启动时调用,例如用户从其他 Activity 返回。onStart () 在 Activity 可见时调用,onResume () 在 Activity 可交互时调用。
来源:牛客博客《Android 面试题集》
14. 以下哪个属性用于设置 Activity 的主题?
A. android:theme
B. android:style
C. android:background
D. android:textColor
答案:A
解析:在 AndroidManifest.xml 中通过android:theme
设置 Activity 的主题,影响整体风格。style 用于定义控件样式,background 设置背景,textColor 设置文本颜色。
来源:CSDN《Android 基础最全题库》
15. 以下哪个方法用于设置 Activity 的屏幕方向?
A. android:screenOrientation
B. android:configChanges
C. android:launchMode
D. android:taskAffinity
答案:A
解析:在 AndroidManifest.xml 中通过android:screenOrientation
设置屏幕方向,如 portrait(竖屏)、landscape(横屏)。configChanges 用于控制配置变化时的行为,launchMode 设置启动模式。
来源:掘金《Android 四大组件面试题》
16. Activity 的启动模式中,哪种模式会清除任务栈中位于其上层的所有 Activity?
A. standard
B. singleTop
C. singleTask
D. singleInstance
答案:C
解析:singleTask 模式下,若目标 Activity 已存在于任务栈中,则清除其上层所有 Activity,使其位于栈顶。singleInstance 模式创建独立任务栈,不影响其他 Activity。
来源:掘金《Android 四大组件面试题》
17. 以下哪个方法用于判断 Activity 是否正在销毁?
A. isDestroyed()
B. isFinishing()
C. onDestroy()
D. finish()
答案:A
解析:isDestroyed () 方法返回 Activity 是否已销毁,常用于避免空指针异常。isFinishing () 返回 Activity 是否正在结束(调用 finish () 后)。
来源:牛客博客《Android 面试题集》
18. 以下哪个方法用于设置 Activity 的窗口背景?
A. getWindow().setBackgroundDrawable()
B. setContentView()
C. findViewById().setBackground()
D. setTheme()
答案:A
解析:通过 getWindow ().setBackgroundDrawable () 设置 Activity 的窗口背景。setContentView () 设置布局,findViewById () 查找控件,setTheme () 设置主题。
来源:CSDN《Android 基础最全题库》
19. 以下哪个方法用于获取 Activity 的上下文?
A. getApplicationContext()
B. getBaseContext()
C. this
D. 以上都是
答案:D
解析:Activity 本身是 Context 的子类,可直接使用 this。getApplicationContext () 获取应用级上下文,getBaseContext () 获取基础上下文。
来源:掘金《Android 四大组件面试题》
20. 以下哪个方法用于启动一个透明主题的 Activity?
A. startActivity()
B. startService()
C. sendBroadcast()
D. bindService()
答案:A
解析:通过 startActivity () 启动 Activity,并在 AndroidManifest.xml 中为其设置透明主题(如android:theme="@android:style/Theme.Translucent"
)。其他方法不涉及 Activity 启动。
来源:CSDN《Android 笔试题大全》
21. Activity 的生命周期中,哪个方法在 Activity 可见但未获得焦点时调用?
A. onPause()
B. onStart()
C. onResume()
D. onStop()
答案:A
解析:onPause () 在 Activity 失去焦点但仍可见时调用,例如弹出对话框。onStart () 在 Activity 可见时调用,onResume () 在 Activity 可交互时调用。
来源:牛客博客《Android 面试题集》
22. 以下哪个方法用于获取 Activity 的布局文件 ID?
A. R.layout.activity_main
B. getResources().getLayout()
C. findViewById(R.id.layout)
D. setContentViewById()
答案:A
解析:通过 R.layout.activity_main 获取布局文件 ID。getResources ().getLayout () 需传入资源名称,findViewById () 查找控件,setContentViewById () 为错误方法。
来源:CSDN《Android 笔试题大全》
23. 以下哪个方法用于设置 Activity 的标题?
A. setTitle()
B. getTitle()
C. setText()
D. getText()
答案:A
解析:setTitle () 方法设置 Activity 的标题。getTitle () 获取标题,setText () 用于设置 TextView 的文本,getText () 获取文本内容。
来源:CSDN《Android 基础最全题库》
24. Activity 的启动模式中,哪种模式会始终创建新实例?
A. standard
B. singleTop
C. singleTask
D. singleInstance
答案:A
解析:standard 模式是默认启动模式,每次启动都会创建新实例。其他模式根据条件复用已有实例。
来源:掘金《Android 四大组件面试题》
25. 以下哪个方法用于获取 Activity 的任务栈信息?
A. getTaskId()
B. getIntent()
C. getCallingActivity()
D. getParentActivityIntent()
答案:A
解析:getTaskId () 返回 Activity 所属任务栈的 ID。getIntent () 获取启动 Activity 的 Intent,getCallingActivity () 获取调用者 Activity,getParentActivityIntent () 获取父 Activity 的 Intent。
来源:牛客博客《Android 面试题集》
二、Service(25 题)
26. 以下哪个方法用于启动一个 Service?
A. startService()
B. bindService()
C. startActivities()
D. sendBroadcast()
答案:A
解析:startService () 启动的 Service 独立运行,与调用者无直接关联。bindService () 用于绑定 Service 以获取其接口,startActivities () 启动多个 Activity,sendBroadcast () 发送广播。
来源:CSDN《Android 笔试题大全》
27. Service 的生命周期中,哪个方法在 Service 被绑定到其他组件时调用?
A. onBind()
B. onStartCommand()
C. onCreate()
D. onUnbind()
答案:A
解析:bindService () 触发 onBind () 方法,返回 IBinder 对象供客户端调用 Service 方法。onStartCommand () 在 startService () 启动时调用,onCreate () 在 Service 创建时调用,onUnbind () 在解绑时调用。
来源:CSDN《Android 笔试题大全》
28. 以下哪个方法用于停止一个 Service?
A. stopService()
B. unbindService()
C. onDestroy()
D. finish()
答案:A
解析:调用 stopService () 或 Service 自身的 stopSelf () 停止 Service。unbindService () 解除绑定,onDestroy () 是生命周期方法,finish () 用于关闭 Activity。
来源:CSDN《Android 笔试题大全》
29. 以下哪个类用于在 Service 中执行耗时操作?
A. IntentService
B. Service
C. AsyncTask
D. Handler
答案:A
解析:IntentService 是 Service 的子类,自动创建工作线程处理任务,执行完后自动停止。Service 默认运行在主线程,需手动创建子线程。
来源:CSDN《Android 移动开发基础案例教程》
30. 以下哪个方法用于绑定一个 Service?
A. bindService()
B. startService()
C. unbindService()
D. onBind()
答案:A
解析:通过 bindService () 方法绑定 Service,需实现 ServiceConnection 接口处理绑定结果。startService () 启动 Service,unbindService () 解除绑定,onBind () 是 Service 的回调方法。
来源:CSDN《Android 笔试题大全》
31. Service 的生命周期中,哪个方法在 Service 被创建时调用?
A. onCreate()
B. onStartCommand()
C. onBind()
D. onDestroy()
答案:A
解析:onCreate () 在 Service 第一次创建时调用,用于初始化资源。onStartCommand () 在每次启动 Service 时调用,onBind () 在绑定 Service 时调用,onDestroy () 在 Service 销毁前调用。
来源:CSDN《Android 笔试题大全》
32. 以下哪个方法用于在 Service 中发送广播?
A. sendBroadcast()
B. startService()
C. bindService()
D. onStartCommand()
答案:A
解析:通过 sendBroadcast () 方法发送广播,通知其他组件。startService () 启动 Service,bindService () 绑定 Service,onStartCommand () 是 Service 的回调方法。
来源:CSDN《Android 笔试题大全》
33. 以下哪个方法用于在 Service 中更新 UI?
A. runOnUiThread()
B. post()
C. Handler.sendMessage()
D. 以上都是
答案:D
解析:通过 Activity 的 runOnUiThread ()、View 的 post () 或 Handler 均可在子线程更新 UI。Service 中需获取 Activity 的上下文才能调用这些方法。
来源:掘金《Android 基础篇面试题》
34. 以下哪个类用于实现 Service 的跨进程通信?
A. AIDL
B. Binder
C. Messenger
D. 以上都是
答案:D
解析:AIDL(Android Interface Definition Language)用于定义跨进程接口,Binder 是底层通信机制,Messenger 基于 AIDL 实现简单跨进程通信。
来源:CSDN《Android 移动开发基础案例教程》
35. 以下哪个方法用于获取 Service 的上下文?
A. getApplicationContext()
B. getBaseContext()
C. this
D. 以上都是
答案:D
解析:Service 本身是 Context 的子类,可直接使用 this。getApplicationContext () 获取应用级上下文,getBaseContext () 获取基础上下文。
来源:CSDN《Android 笔试题大全》
36. 以下哪个方法用于在 Service 中处理 Intent?
A. onStartCommand()
B. onBind()
C. onCreate()
D. onDestroy()
答案:A
解析:onStartCommand () 在 Service 通过 startService () 启动时调用,接收启动 Intent。onBind () 在绑定 Service 时调用,onCreate () 在 Service 创建时调用,onDestroy () 在 Service 销毁前调用。
来源:CSDN《Android 笔试题大全》
37. 以下哪个方法用于解除与 Service 的绑定?
A. unbindService()
B. stopService()
C. onUnbind()
D. finish()
答案:A
解析:调用 unbindService () 解除与 Service 的绑定,需传入之前绑定的 ServiceConnection。stopService () 停止 Service,onUnbind () 是 Service 的回调方法,finish () 用于关闭 Activity。
来源:CSDN《Android 笔试题大全》
38. 以下哪个方法用于在 Service 中启动一个 Activity?
A. startActivity()
B. startService()
C. sendBroadcast()
D. bindService()
答案:A
解析:通过 startActivity () 启动 Activity,需设置 Intent 的FLAG_ACTIVITY_NEW_TASK
标志,因为 Service 没有任务栈。startService () 启动 Service,sendBroadcast () 发送广播,bindService () 绑定 Service。
来源:CSDN《Android 笔试题大全》
39. 以下哪个方法用于在 Service 中获取系统服务?
A. getSystemService()
B. getApplicationContext()
C. getBaseContext()
D. getService()
答案:A
解析:getSystemService () 方法获取系统服务,如 Context.WINDOW_SERVICE、Context.ALARM_SERVICE 等。getApplicationContext () 获取应用级上下文,getBaseContext () 获取基础上下文。
来源:CSDN《Android 笔试题大全》
40. 以下哪个方法用于在 Service 中处理异步任务?
A. AsyncTask
B. Thread
C. Handler
D. 以上都是
答案:D
解析:AsyncTask、Thread、Handler 均可用于在 Service 中执行异步任务。AsyncTask 简化了异步操作与 UI 线程的交互,Thread 和 Handler 需手动管理线程。
来源:掘金《Android 基础篇面试题》
41. 以下哪个方法用于在 Service 中注册广播接收器?
A. registerReceiver()
B. unregisterReceiver()
C. sendBroadcast()
D. abortBroadcast()
答案:A
解析:通过 registerReceiver () 动态注册广播接收器,需在 Service 的 onDestroy () 中调用 unregisterReceiver () 注销。sendBroadcast () 发送广播,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
42. 以下哪个方法用于在 Service 中获取 Intent 传递的数据?
A. getIntent()
B. getExtras()
C. getBundle()
D. getStringExtra()
答案:A
解析:通过 getIntent () 获取启动 Service 的 Intent,然后调用 getExtras () 或 getStringExtra () 等方法获取数据。getBundle () 非标准方法。
来源:CSDN《Android 笔试题大全》
43. 以下哪个方法用于在 Service 中启动一个前台服务?
A. startForeground()
B. setForeground()
C. onStartCommand()
D. onCreate()
答案:A
解析:调用 startForeground (int id, Notification notification) 将 Service 设为前台服务,显示通知。setForeground () 为过时方法,onStartCommand () 和 onCreate () 是生命周期方法。
来源:CSDN《Android 移动开发基础案例教程》
44. 以下哪个方法用于在 Service 中停止前台服务?
A. stopForeground()
B. setForeground(false)
C. onDestroy()
D. finish()
答案:A
解析:调用 stopForeground (true) 停止前台服务,移除通知。setForeground (false) 为过时方法,onDestroy () 在 Service 销毁前调用,finish () 用于关闭 Activity。
来源:CSDN《Android 移动开发基础案例教程》
45. 以下哪个方法用于在 Service 中处理绑定请求?
A. onBind()
B. onStartCommand()
C. onCreate()
D. onUnbind()
答案:A
解析:onBind () 方法在 Service 被绑定时调用,需返回 IBinder 对象供客户端使用。onStartCommand () 在 Service 启动时调用,onCreate () 在 Service 创建时调用,onUnbind () 在解绑时调用。
来源:CSDN《Android 笔试题大全》
46. 以下哪个方法用于在 Service 中处理解绑请求?
A. onUnbind()
B. unbindService()
C. onDestroy()
D. finish()
答案:A
解析:onUnbind () 方法在 Service 被解绑时调用。unbindService () 是客户端方法,onDestroy () 在 Service 销毁前调用,finish () 用于关闭 Activity。
来源:CSDN《Android 笔试题大全》
47. 以下哪个方法用于在 Service 中处理重新绑定请求?
A. onRebind()
B. onUnbind()
C. onBind()
D. onCreate()
答案:A
解析:若 Service 的 onUnbind () 返回 true,当新客户端绑定时会调用 onRebind ()。onUnbind () 在解绑时调用,onBind () 在绑定时调用,onCreate () 在 Service 创建时调用。
来源:CSDN《Android 移动开发基础案例教程》
48. 以下哪个方法用于在 Service 中获取当前线程?
A. Thread.currentThread()
B. getThread()
C. getBaseContext()
D. getApplicationContext()
答案:A
解析:通过 Thread.currentThread () 获取当前线程。getThread () 非标准方法,getBaseContext () 和 getApplicationContext () 获取上下文。
来源:CSDN《Android 笔试题大全》
49. 以下哪个方法用于在 Service 中处理配置变化?
A. onConfigurationChanged()
B. onStartCommand()
C. onCreate()
D. onDestroy()
答案:A
解析:若在 AndroidManifest.xml 中为 Service 设置android:configChanges
属性,当配置变化时会调用 onConfigurationChanged () 方法。onStartCommand () 在 Service 启动时调用,onCreate () 在 Service 创建时调用。
来源:CSDN《Android 移动开发基础案例教程》
50. 以下哪个方法用于在 Service 中处理低内存情况?
A. onTrimMemory()
B. onLowMemory()
C. onDestroy()
D. finish()
答案:A
解析:onTrimMemory () 方法在系统内存不足时调用,可释放非必要资源。onLowMemory () 为过时方法,onDestroy () 在 Service 销毁前调用,finish () 用于关闭 Activity。
来源:CSDN《Android 移动开发基础案例教程》
三、BroadcastReceiver(25 题)
51. 以下哪个组件用于接收系统或应用发出的广播?
A. BroadcastReceiver
B. Service
C. ContentProvider
D. Activity
答案:A
解析:BroadcastReceiver 通过注册 IntentFilter 监听特定广播事件。Service 用于后台任务,ContentProvider 用于数据共享,Activity 用于用户界面。
来源:CSDN《Android 笔试题大全》
52. 以下哪个方法用于注册动态 BroadcastReceiver?
A. registerReceiver()
B. unregisterReceiver()
C. sendBroadcast()
D. abortBroadcast()
答案:A
解析:在代码中调用 registerReceiver (BroadcastReceiver receiver, IntentFilter filter) 注册动态广播接收器。unregisterReceiver () 注销,sendBroadcast () 发送广播,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
53. 以下哪个方法用于发送有序广播?
A. sendOrderedBroadcast()
B. sendBroadcast()
C. sendStickyBroadcast()
D. abortBroadcast()
答案:A
解析:sendOrderedBroadcast () 发送有序广播,按优先级依次传递,可被接收者截断。sendBroadcast () 发送无序广播,sendStickyBroadcast () 发送粘性广播,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
54. 以下哪个方法用于拦截有序广播?
A. abortBroadcast()
B. sendOrderedBroadcast()
C. registerReceiver()
D. unregisterReceiver()
答案:A
解析:在 BroadcastReceiver 的 onReceive () 方法中调用 abortBroadcast () 可拦截有序广播,阻止其继续传递。sendOrderedBroadcast () 发送有序广播,registerReceiver () 注册接收器,unregisterReceiver () 注销接收器。
来源:CSDN《Android 笔试题大全》
55. 以下哪个方法用于发送粘性广播?
A. sendStickyBroadcast()
B. sendBroadcast()
C. sendOrderedBroadcast()
D. abortBroadcast()
答案:A
解析:sendStickyBroadcast () 发送粘性广播,广播会持续存在,直到被移除。sendBroadcast () 发送无序广播,sendOrderedBroadcast () 发送有序广播,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
56. 以下哪个方法用于移除粘性广播?
A. removeStickyBroadcast()
B. sendStickyBroadcast()
C. abortBroadcast()
D. unregisterReceiver()
答案:A
解析:调用 removeStickyBroadcast (Intent intent) 移除粘性广播。sendStickyBroadcast () 发送粘性广播,abortBroadcast () 拦截有序广播,unregisterReceiver () 注销接收器。
来源:CSDN《Android 笔试题大全》
57. 以下哪个方法用于在 BroadcastReceiver 中获取广播数据?
A. getIntent()
B. getExtras()
C. getBundle()
D. getStringExtra()
答案:A
解析:通过 getIntent () 获取广播的 Intent,然后调用 getExtras () 或 getStringExtra () 等方法获取数据。getBundle () 非标准方法。
来源:CSDN《Android 笔试题大全》
58. 以下哪个方法用于在 BroadcastReceiver 中处理广播?
A. onReceive()
B. onCreate()
C. onStart()
D. onDestroy()
答案:A
解析:onReceive (Context context, Intent intent) 方法在广播接收器接收到广播时调用。BroadcastReceiver 没有 onCreate ()、onStart ()、onDestroy () 等生命周期方法。
来源:CSDN《Android 笔试题大全》
59. 以下哪个方法用于在 BroadcastReceiver 中发送广播?
A. sendBroadcast()
B. registerReceiver()
C. unregisterReceiver()
D. abortBroadcast()
答案:A
解析:通过 sendBroadcast (Intent intent) 发送广播。registerReceiver () 注册接收器,unregisterReceiver () 注销接收器,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
60. 以下哪个方法用于在 BroadcastReceiver 中启动 Activity?
A. startActivity()
B. startService()
C. sendBroadcast()
D. bindService()
答案:A
解析:通过 startActivity (Intent intent) 启动 Activity,需设置 Intent 的FLAG_ACTIVITY_NEW_TASK
标志。startService () 启动 Service,sendBroadcast () 发送广播,bindService () 绑定 Service。
来源:CSDN《Android 笔试题大全》
61. 以下哪个方法用于在 BroadcastReceiver 中启动 Service?
A. startService()
B. bindService()
C. sendBroadcast()
D. abortBroadcast()
答案:A
解析:通过 startService (Intent intent) 启动 Service。bindService () 绑定 Service,sendBroadcast () 发送广播,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
62. 以下哪个方法用于在 BroadcastReceiver 中获取上下文?
A. getApplicationContext()
B. getBaseContext()
C. this
D. 以上都是
答案:D
解析:BroadcastReceiver 的 onReceive () 方法参数中的 context 即为上下文,可直接使用。getApplicationContext () 获取应用级上下文,getBaseContext () 获取基础上下文。
来源:CSDN《Android 笔试题大全》
63. 以下哪个方法用于在 BroadcastReceiver 中注册动态广播接收器?
A. registerReceiver()
B. unregisterReceiver()
C. sendBroadcast()
D. abortBroadcast()
答案:A
解析:在代码中调用 registerReceiver (BroadcastReceiver receiver, IntentFilter filter) 注册动态广播接收器。unregisterReceiver () 注销,sendBroadcast () 发送广播,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
64. 以下哪个方法用于在 BroadcastReceiver 中注销动态广播接收器?
A. unregisterReceiver()
B. registerReceiver()
C. sendBroadcast()
D. abortBroadcast()
答案:A
解析:调用 unregisterReceiver (BroadcastReceiver receiver) 注销动态广播接收器。registerReceiver () 注册,sendBroadcast () 发送广播,abortBroadcast () 拦截有序广播。
来源:CSDN《Android 笔试题大全》
65. 以下哪个方法用于在 BroadcastReceiver 中获取广播的优先级?
A. getPriority()
B. getIntent().getIntExtra(“android.intent.extra.priority”, 0)
C. getIntentFilter().getPriority()
D. 以上都不是
答案:B
解析:有序广播的优先级通过 Intent 的android.intent.extra.priority
附加参数获取。getPriority () 非标准方法,IntentFilter 的 getPriority () 返回注册时设置的优先级。
来源:CSDN《Android 笔试题大全》
66. 以下哪个方法用于在 BroadcastReceiver 中设置广播的结果数据?
A. setResultCode()
B. setResultData()
C. setResultExtras()
D. 以上都是
答案:D
解析:setResultCode (int code) 设置结果码,setResultData (String data) 设置结果数据,setResultExtras (Bundle extras) 设置结果附加数据,用于有序广播的传递。
来源:CSDN《Android 笔试题大全》
67. 以下哪个方法用于在 BroadcastReceiver 中获取广播的结果数据?
A. getResultCode()
B. getResultData()
C. getResultExtras()
D. 以上都是
答案:D
解析:getResultCode () 获取结果码,getResultData () 获取结果数据,getResultExtras () 获取结果附加数据,用于有序广播的接收。
来源:CSDN《Android 笔试题大全》
68. 以下哪个方法用于在 BroadcastReceiver 中处理有序广播的下一个接收者?
A. goToNextReceiver()
B. abortBroadcast()
C. sendOrderedBroadcast()
D. 以上都不是
答案:D
解析:有序广播的传递由系统自动处理,接收者无法直接控制下一个接收者。abortBroadcast () 可拦截广播,sendOrderedBroadcast () 发送有序广播。
来源:CSDN《Android 笔试题大全》
69. 以下哪个方法用于在 BroadcastReceiver 中处理粘性广播?
A. getStickyBroadcast()
B. sendStickyBroadcast()
C. removeStickyBroadcast()
D. 以上都是
答案:D
解析:getStickyBroadcast (Intent intent) 获取粘性广播,sendStickyBroadcast (Intent intent) 发送粘性广播,removeStickyBroadcast (Intent intent) 移除粘性广播。
来源:CSDN《Android 笔试题大全》
70. 以下哪个方法用于在 BroadcastReceiver 中获取粘性广播的数据?
A. getStickyBroadcast()
B. getIntent()
C. getExtras()
D. 以上都是
答案:A
解析:调用 getStickyBroadcast (Intent intent) 获取粘性广播的 Intent,然后通过 getExtras () 等方法获取数据。getIntent () 返回当前广播的 Intent,可能为空。
来源:CSDN《Android 笔试题大全》
71. 以下哪个方法用于在 BroadcastReceiver 中处理系统广播?
A. 注册相应的 IntentFilter
B. 发送相应的广播
C. 调用系统方法
D. 以上都不是
答案:A
解析:通过注册包含系统广播 Action 的 IntentFilter(如Intent.ACTION_BOOT_COMPLETED
)来接收系统广播。发送广播无法处理系统广播,调用系统方法需具体场景。
来源:CSDN《Android 笔试题大全》
72. 以下哪个方法用于在 BroadcastReceiver 中处理应用内广播?
A. 注册相应的 IntentFilter
B. 发送相应的广播
C. 调用应用方法
D. 以上都是
答案:A
解析:通过注册包含应用自定义 Action 的 IntentFilter 来接收应用内广播。发送广播需调用 sendBroadcast (),调用应用方法需具体场景。
来源:CSDN《Android 笔试题大全》
73. 以下哪个方法用于在 BroadcastReceiver 中处理特定权限的广播?
A. 在 IntentFilter 中设置权限
B. 在 Manifest 中声明权限
C. 调用 checkSelfPermission ()
D. 以上都是
答案:A
解析:在注册广播接收器时,通过 IntentFilter 的 addPermission (String permission) 方法设置接收广播所需的权限。在 Manifest 中声明权限是发送广播的要求,checkSelfPermission () 用于检查权限。
来源:CSDN《Android 笔试题大全》
74. 以下哪个方法用于在 BroadcastReceiver 中处理特定组件的广播?
A. 设置 Intent 的 ComponentName
B. 注册相应的 IntentFilter
C. 调用 sendBroadcast ()
D. 以上都是
答案:A
解析:通过设置 Intent 的 ComponentName 指定目标组件,确保广播仅被该组件接收。注册 IntentFilter 可过滤广播,sendBroadcast () 发送广播。
来源:CSDN《Android 笔试题大全》
75. 以下哪个方法用于在 BroadcastReceiver 中处理特定数据的广播?
A. 设置 Intent 的 Data 属性
B. 注册相应的 IntentFilter
C. 调用 sendBroadcast ()
D. 以上都是
答案:D
解析:通过设置 Intent 的 Data 属性(如 Uri)和注册包含该 Data 的 IntentFilter,可过滤特定数据的广播。sendBroadcast () 发送广播时需包含相应数据。
来源:CSDN《Android 笔试题大全》
四、ContentProvider(25 题)
76. ContentProvider 的作用是?
A. 跨应用共享数据
B. 启动后台服务
C. 处理用户界面
D. 发送广播
答案:A
解析:ContentProvider 通过 URI 暴露数据,允许其他应用访问或修改。启动服务使用 Service,处理 UI 使用 Activity,发送广播使用 BroadcastReceiver。
来源:CSDN《Android 笔试题大全》
77. 以下哪个类用于访问 ContentProvider 的数据?
A. ContentResolver
B. ContentObserver
C. Cursor
D. ContentValues
答案:A
解析:通过 ContentResolver 的 query ()、insert ()、update ()、delete () 方法操作 ContentProvider 的数据。ContentObserver 监听数据变化,Cursor 遍历查询结果,ContentValues 存储键值对数据。
来源:CSDN《Android 笔试题大全》
78. 以下哪个方法用于注册 ContentObserver?
A. registerContentObserver()
B. unregisterContentObserver()
C. notifyChange()
D. onChange()
答案:A
解析:调用 ContentResolver 的 registerContentObserver (Uri uri, boolean notifyForDescendants, ContentObserver observer) 注册 ContentObserver 监听数据变化。unregisterContentObserver () 注销,notifyChange () 通知变化,onChange () 是回调方法。
来源:CSDN《Android 笔试题大全》
79. 以下哪个方法用于在 ContentProvider 中查询数据?
A. query()
B. insert()
C. update()
D. delete()
答案:A
解析:ContentProvider 的 query () 方法根据 Uri 查询数据,返回 Cursor 对象。insert () 插入数据,update () 更新数据,delete () 删除数据。
来源:CSDN《Android 笔试题大全》
80. 以下哪个方法用于在 ContentProvider 中插入数据?
A. insert()
B. query()
C. update()
D. delete()
答案:A
解析:ContentProvider 的 insert () 方法将 ContentValues 数据插入到指定 Uri。query () 查询数据,update () 更新数据,delete () 删除数据。
来源:CSDN《Android 笔试题大全》
81. 以下哪个方法用于在 ContentProvider 中更新数据?
A. update()
B. insert()
C. query()
D. delete()
答案:A
解析:ContentProvider 的 update () 方法根据 Uri 和条件更新数据。insert () 插入数据,query () 查询数据,delete () 删除数据。
来源:CSDN《Android 笔试题大全》
82. 以下哪个方法用于在 ContentProvider 中删除数据?
A. delete()
B. insert()
C. query()
D. update()
答案:A
解析:ContentProvider 的 delete () 方法根据 Uri 和条件删除数据。insert () 插入数据,query () 查询数据,update () 更新数据。
来源:CSDN《Android 笔试题大全》
83. 以下哪个方法用于在 ContentProvider 中获取数据类型?
A. getType()
B. getMimeType()
C. getContentUri()
D. 以上都不是
答案:A
解析:ContentProvider 的 getType (Uri uri) 方法返回指定 Uri 对应数据的 MIME 类型。getMimeType () 非标准方法,getContentUri () 返回 ContentProvider 的 Uri。
来源:CSDN《Android 笔试题大全》
84. 以下哪个方法用于在 ContentProvider 中处理 Uri 匹配?
A. UriMatcher
B. ContentUris
C. MimeTypeMap
D. 以上都是
答案:A
解析:UriMatcher 用于匹配不同的 Uri 模式,将其映射到不同的操作。ContentUris 用于操作 Uri 中的 ID 部分,MimeTypeMap 用于获取 MIME 类型。
来源:CSDN《Android 移动开发基础案例教程》
85. 以下哪个方法用于在 ContentProvider 中生成带 ID 的 Uri?
A. ContentUris.withAppendedId()
B. Uri.parse()
C. Uri.Builder()
D. 以上都是
答案:A
解析:ContentUris.withAppendedId (Uri uri, long id) 方法在 Uri 末尾添加 ID。Uri.parse () 解析字符串为 Uri,Uri.Builder () 构建 Uri。
来源:CSDN《Android 移动开发基础案例教程》
86. 以下哪个方法用于在 ContentProvider 中获取 Uri 的 ID 部分?
A. ContentUris.parseId()
B. Uri.getLastPathSegment()
C. UriMatcher.match()
D. 以上都是
答案:D
解析:ContentUris.parseId (Uri uri) 从 Uri 中解析出 ID,Uri.getLastPathSegment () 获取最后一个路径段(通常为 ID),UriMatcher.match () 匹配 Uri 并返回对应的代码。
来源:CSDN《Android 移动开发基础案例教程》
87. 以下哪个方法用于在 ContentProvider 中处理多表查询?
A. query()
B. join()
C. union()
D. 以上都不是
答案:A
解析:ContentProvider 的 query () 方法可通过编写 SQL 语句实现多表查询。join () 和 union () 是 SQL 关键字,需在 query () 中使用。
来源:CSDN《Android 笔试题大全》
88. 以下哪个方法用于在 ContentProvider 中处理事务?
A. beginTransaction()
B. setTransactionSuccessful()
C. endTransaction()
D. 以上都是
答案:D
解析:通过 SQLiteDatabase 的 beginTransaction () 开始事务,setTransactionSuccessful () 标记成功,endTransaction () 提交或回滚事务。
来源:CSDN《Android 移动开发基础案例教程》
89. 以下哪个方法用于在 ContentProvider 中处理权限控制?
A. 在 Manifest 中声明权限
B. 在 query () 等方法中检查权限
C. 使用 grantUriPermission ()
D. 以上都是
答案:D
解析:在 Manifest 中声明权限限制访问,在 ContentProvider 的方法中调用 checkCallingPermission () 检查权限,使用 grantUriPermission () 临时授权 Uri 访问。
来源:CSDN《Android 移动开发基础案例教程》
90. 以下哪个方法用于在 ContentProvider 中处理数据变化通知?
A. notifyChange()
B. registerContentObserver()
C. unregisterContentObserver()
D. onChange()
答案:A
解析:调用 ContentResolver 的 notifyChange (Uri uri, ContentObserver observer) 通知注册的 ContentObserver 数据已变化。registerContentObserver () 注册观察者,unregisterContentObserver () 注销,onChange () 是回调方法。
来源:CSDN《Android 笔试题大全》
91. 以下哪个方法用于在 ContentProvider 中获取上下文?
A. getContext()
B. getApplicationContext()
C. getBaseContext()
D. 以上都是
答案:A
解析:ContentProvider 的 getContext () 方法返回其所在应用的上下文。getApplicationContext () 和 getBaseContext () 非 ContentProvider 方法。
来源:CSDN《Android 笔试题大全》
92. 以下哪个方法用于在 ContentProvider 中获取数据库实例?
A. getReadableDatabase()
B. getWritableDatabase()
C. SQLiteDatabase.openDatabase()
D. 以上都是
答案:D
解析:通过 SQLiteOpenHelper 的 getReadableDatabase () 或 getWritableDatabase () 获取数据库实例,或使用 SQLiteDatabase.openDatabase () 直接打开数据库。
来源:CSDN《Android 移动开发基础案例教程》
93. 以下哪个方法用于在 ContentProvider 中处理批量操作?
A. applyBatch()
B. bulkInsert()
C. update()
D. delete()
答案:B
解析:ContentProvider 的 bulkInsert (Uri uri, ContentValues [] values) 方法批量插入数据。applyBatch () 用于执行批量操作(如插入、更新、删除),需 ContentResolver 支持。
来源:CSDN《Android 移动开发基础案例教程》
94. 以下哪个方法用于在 ContentProvider 中处理排序?
A. query () 的 sortOrder 参数
B. orderBy 子句
C. setSort()
D. 以上都是
答案:A
解析:在 ContentProvider 的 query () 方法中,通过 sortOrder 参数指定排序方式。orderBy 是 SQL 关键字,需在 sortOrder 中使用。
来源:CSDN《Android 笔试题大全》
95. 以下哪个方法用于在 ContentProvider 中处理分页查询?
A. query () 的 limit 和 offset 参数
B. LIMIT 和 OFFSET 子句
C. setPage()
D. 以上都是
答案:A
解析:在 ContentProvider 的 query () 方法中,通过 limit 和 offset 参数实现分页。LIMIT 和 OFFSET 是 SQL 关键字,需在 selectionArgs 中使用。
来源:CSDN《Android 笔试题大全》
96. 以下哪个方法用于在 ContentProvider 中处理模糊查询?
A. query () 的 selection 参数使用 LIKE
B. 使用通配符 %
C. setFilter()
D. 以上都是
答案:A
解析:在 ContentProvider 的 query () 方法中,通过 selection 参数设置 LIKE 条件(如name LIKE ?
),并在 selectionArgs 中传入通配符(如%test%
)。
来源:CSDN《Android 笔试题大全》
97. 以下哪个方法用于在 ContentProvider 中处理数据类型转换?
A. 使用 Cursor 的 getColumnIndex () 方法
B. 使用 Cursor 的 getType () 方法
C. 使用 Cursor 的 getXXX () 方法
D. 以上都是
答案:C
解析:通过 Cursor 的 getInt ()、getString () 等方法获取对应数据类型的值。getColumnIndex () 获取列索引,getType () 返回列类型。
来源:CSDN《Android 笔试题大全》
98. 以下哪个方法用于在 ContentProvider 中处理数据聚合?
A. query () 的 groupBy 参数
B. GROUP BY 子句
C. setGroup()
D. 以上都是
答案:A
解析:在 ContentProvider 的 query () 方法中,通过 groupBy 参数指定分组方式。GROUP BY 是 SQL 关键字,需在 groupBy 中使用。
来源:CSDN《Android 笔试题大全》
99. 以下哪个方法用于在 ContentProvider 中处理数据过滤?
A. query () 的 selection 参数
B. WHERE 子句
C. setFilter()
D. 以上都是
答案:A
解析:在 ContentProvider 的 query () 方法中,通过 selection 参数设置过滤条件(如age > ?
),并在 selectionArgs 中传入参数值。
来源:CSDN《Android 笔试题大全》
100. 以下哪个方法用于在 ContentProvider 中处理数据连接?
A. query () 的 tables 参数
B. JOIN 子句
C. setJoin()
D. 以上都是
答案:A
解析:在 ContentProvider 的 query () 方法中,通过 tables 参数指定连接的表。JOIN 是 SQL 关键字,需在 selection 中使用。
来源:CSDN《Android 笔试题大全》