安卓面试题总结

一、Android中进程和线程的区别

**Android 中线程和进程是两个不同的概念,但都与并发编程密切相关。

1)线程是一个进程内的执行路径,能够与同一进程中的其他线程共享同一块内存空间,线程比进程更轻量级,可以更快地创建和切换,但它们也更容易导致数据竞争和其它同步问题。
2)进程是一个独立的运行环境,拥有自己的内存空间和系统资源,不同进程之间不能直接共享内存空间,需要通过 IPC(lnter-Process Communication)机制进行通信。进程之间的隔离使其更加稳定和安全,但创建和切换进程的代要高于线程。
扩展知识:
1)主线程和工作线程:
主线程(UI线程):负责处理UI的更新和用户交互,即使在处理较长时间的操作中,它也需要保持响应性,耗时操作应避免在主线程执行,否则会造成应用卡顿其至无响应(ANR,Application Not Responding)
工作线程:通常用于处理耗时操作,比如网络清求或数据库操作,以免阳塞主线程,使用线程池(如 Executors)可以更高效地管理多个工作线程。
2)AsyncTask:
早期的Android中引入的一个简便的工具类,用于在主线程外执行后台任务,并在完成后将结果返回到主线程。尽管易于使用,但已被弃用,建议使用现代的工具类如Executorservice 或HandlerThread或RxJava.
3)Handler 和 Looper:
Handler和Loper是Android中用于处理消息和Runnable对象的机制。Looper 负责循环地处理消息队列中的消息,而Hander 则负责发送和处理这些消息。典型用法是在子线程中创建一个 Looper ,然后使用 Handler 在该子线程中处理任务。
4)Service 和IntentService:
service是一种可以在后台长期运行的组件,适用于一些后台计算或网络请求等需求。
Intentservice是 service 的一种简化版本,通过工作线程来外理 Intent,相对更加省心,可以自动在任务完成后停止服务。**

二、什么是Android中的四大组件?

Android 的四大组件分别是:Activity、Service、Broadcast Receiver 和 Content Provider.
1)Activity:这是你与用户进行交互的入口。每一个 Activity 都是一个单独的界面,负责显示 UI和响应用户操作。
2)Service:Service 是运行在后台且不直接与用户交互的组件。适用于需要在后台执行长时间运行操作的任务,类似播放音乐或下载文件等。
3)Broadcast Receiver:用于接收并响应广播消息,广播消息可以是来自系统的,也可以是来自应用的。典型用例包括处理系统发出的电池电量低通知或应
用内部的事件通知。
4)Content Provider:用来在不同应用间共享数据。它提供了一套标准的方法来对数据进行访问和操作,例如通过 ContentResolver 查询或修改数据。
扩展知识
它们的应用场景和工作原理
1)Activity:
Activity 是 Android 应用存在的基础,每一个应用至少包含一个 Activity。通常,我们会把 Activity 类比为"屏幕"或"页面"。通过 Intents,你可以启动
其他 Activity 甚至传递数据。Activity 有自己的生命周期,你需要管理它们的状态,譬如 onCreate0、onstart0、onResume() 等方法,它们帮助你正确启动、恢复、暂停和销毁Activity。
2)Service:
Service 分为两种类型:前台服务(foreground Service)和后台服务(Background Service)。前台服务执行一项用户感知的操作并显示一个通知,后台服务用于执行一些无用户感知的操作。你可以通过 startService( )方法启动服务,也可以借助 bindService( 方法绑定服务以便进行进程间诵信。
3)Broadcast Receiver:
Broadcast 系统广泛接用于系统各个方面,例如电池电量变化、屏幕开关状态、更换网络等,自定义广播可以被应用内部其他组件监听。这是通过注册
BroadcastReceiver 完成的,无论是静态注册还是动态注册。接收广播消息后,你可以在 onReceive( ) 方法中实现处理逻辑。
4)Content Provider:
Content Provider 是标准化的接口,便于储存和检索应用间共享的数据。它采用了类似于数据库的方式来访问数据:URI(统一资源标识符)。例如,你可以
通过 Contacts provider获得设备上的联系人信息。在实现, Content Provider时会涉及到以下几个方法:query( )、inser( )、update( )和 delet(),这些方法帮助你管理数据,保证数据的一致性和互操作性。
除了这些,四大组件间还可以通过Intent 协同工作。Intent 是用于在应用间发起执行操作的消息,它可以是显式的(指定具体组件),也可以是隐式的(指
定要完成的动作)。例如,可以用Intent 启动 Activity、Service,或者发送广播消息。

相关推荐
王码码20351 天前
Flutter for OpenHarmony: Flutter 三方库 cryptography 在鸿蒙上实现金融级现代加解密(高性能安全库)
android·安全·flutter·华为·金融·harmonyos
亚历克斯神1 天前
Flutter for OpenHarmony:Flutter 三方库 yaml_edit 精准修改 YAML 文件内容(保留注释与格式的编辑神器)
android·flutter·华为·harmonyos
左手厨刀右手茼蒿1 天前
Flutter for OpenHarmony: Flutter 三方库 image_size_getter 零加载极速获取图片尺寸(鸿蒙 UI 布局优化必备)
android·服务器·flutter·ui·华为·harmonyos
亚历克斯神1 天前
Flutter for OpenHarmony:zxing2 纯 Dart 条码扫描与生成库(不仅是扫码,更是编解码引擎) 深度解析与鸿蒙适配指南
android·flutter·华为·harmonyos
钛态1 天前
Flutter for OpenHarmony:dio_cookie_manager 让 Dio 发挥会话管理能力,像浏览器一样自动处理 Cookie 深度解析与鸿蒙适配指南
android·linux·运维·flutter·ui·华为·harmonyos
键盘鼓手苏苏1 天前
Flutter for OpenHarmony: Flutter 三方库 ntp 精准同步鸿蒙设备系统时间(分布式协同授时利器)
android·分布式·算法·flutter·华为·中间件·harmonyos
louisgeek1 天前
Android ViewBinding
android
城东米粉儿1 天前
Kotlin 协程的异常处理 笔记
android
锥栗1 天前
【其他】基于Trae的大模型智能应用开发
android·java·数据库
恋猫de小郭1 天前
Flutter 2026 Roadmap 发布,未来计划是什么?
android·前端·flutter