安卓面试题总结

一、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,或者发送广播消息。

相关推荐
代码s贝多芬的音符5 小时前
android mlkit 实现仰卧起坐和俯卧撑识别
android
jwn9996 小时前
Laravel9.x核心特性全解析
android
今天又在写代码7 小时前
数据智能分析平台部署服务器
android·服务器·adb
梦里花开知多少8 小时前
深入谈谈Launcher的启动流程
android·架构
jwn9998 小时前
Laravel11.x新特性全解析
android·开发语言·php·laravel
我就是马云飞8 小时前
停更5年后,我为什么重新开始写技术内容了
android·前端·程序员
stevenzqzq9 小时前
Kotlin 协程:withContext 与 async 核心区别与使用场景
android·开发语言·kotlin
唔669 小时前
原生 Android(Kotlin)仅串口「侵入式架构」完整案例三
android·架构·kotlin
唔669 小时前
原生 Android(Kotlin)仅串口「可插拔架构」完整案例一
android·架构·kotlin
Melrose9 小时前
移动端安全攻防
android·前端·安全