Android面试必备知识点:生命周期、数据存储与权限管理

5星 · 超过95%的资源 需积分: 9 3 下载量 71 浏览量 更新于2024-07-29 收藏 268KB PDF 举报
"这篇资料是关于Android开发的面试题集,涵盖了从Activity生命周期到数据存储、Service管理、BroadcastReceiver、权限控制等多个核心知识点,旨在帮助开发者全面准备Android面试。" 在Android开发中,Activity的生命周期是面试常考知识点。Activity有六个主要的生命周期方法:onCreate(), onStart(), onResume(), onPause(), onStop() 和 onRestart()。onCreate() 在Activity创建时被调用,通常用于初始化界面和数据。onStart() 随着Activity变得对用户可见而调用,而onResume() 表示Activity已经准备好与用户交互。当用户离开Activity或者新Activity覆盖当前Activity时,会调用onPause(),它用于保存当前状态。如果Activity完全不可见,onStop() 将被调用。如果Activity之前被停止,再次显示时会先调用onRestart(),然后是onStart()。 Activity的状态保存至关重要,特别是在被系统回收之前。可以通过重写onSaveInstanceState(Bundle outState) 方法来保存临时状态,如用户输入,而持久状态则应在onCreate() 的savedInstanceState参数中恢复。如果希望Activity以窗口样式显示,可以使用 FLAG_ACTIVITY_NO_HISTORY 或其他窗口Flag来定制其行为。 Android提供了五种基本布局:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、TableLayout(表格布局)和ConstraintLayout(约束布局)。它们各自有不同的应用场景,如LinearLayout适用于简单水平或垂直排列,RelativeLayout允许视图相对彼此定位,而ConstraintLayout则允许更复杂的界面设计。 数据存储方式包括:SharedPreferences用于轻量级键值对存储;SQLite数据库适合结构化数据;内部存储和外部存储用于文件;ContentProvider则是共享数据的标准接口。 ContentProvider使得应用间的数据共享成为可能,通过URI暴露数据,并提供insert、query、update和delete等操作接口。 Service的启动和停止通常通过startService()和stopService()完成,startService()用于执行一次性任务,而bindService()则用于绑定到Service进行长期交互。 广播接收器有两种注册方式:静态注册在AndroidManifest.xml中,始终运行但可能导致内存泄漏;动态注册在代码中,仅在注册期间接收广播,更节省资源。 Message、Handler、MessageQueue和Looper是Android消息传递机制的核心组件。Message携带数据,Handler负责处理消息,MessageQueue是消息队列,Looper则是循环读取消息并分发给对应Handler的线程。 AIDL(Android Interface Definition Language)用于进程间通信(IPC),定义接口并生成客户端和服务端的代理类,支持基本数据类型和Parcelable对象的传输。 Android系统运行时权限与文件系统权限不同,前者在运行时请求,用户可明确同意或拒绝,后者是在安装时授予,且通常针对文件系统访问。 指定浏览器访问页面可通过Intent的setPackage()方法实现,因为Android系统允许选择默认浏览器。 调整图片透明度的算法涉及遍历像素数组,检查每个像素是否为白色并改变其透明度。 Android系统的优点包括开放源码、丰富的设备支持和强大的生态系统,而缺点可能包括碎片化、性能和安全性问题。 以上内容只是Android面试题的一部分,完整的题库还包括更多关于Android框架、UI设计、网络编程、性能优化等方面的问题,这些都是面试者需要深入理解的领域。