2021年Android开发面试题解析

qqchamber17485 15 0 md 2024-07-04 15:07:19

Activity生命周期

一个Activity从创建到销毁会经历一系列状态变化,这些状态构成了Activity的生命周期。了解生命周期可以帮助我们更好地管理应用程序的资源和行为。

生命周期回调方法

  • onCreate(): Activity首次创建时调用。用于完成初始化操作,例如加载布局、绑定数据等。
  • onStart(): Activity可见但不可交互时调用。
  • onResume(): Activity可见且可交互时调用。
  • onPause(): Activity失去焦点但仍部分可见时调用。
  • onStop(): Activity不可见时调用。
  • onDestroy(): Activity销毁前调用。用于释放资源。

生命周期场景示例

场景一: 启动一个新的Activity

ActivityA --(startActivity)-->; ActivityB
  • ActivityA: onPause() -> onStop()
  • ActivityB: onCreate() -> onStart() -> onResume()

场景二: 从Activity返回

ActivityB --(finish)-->; ActivityA
  • ActivityB: onPause() -> onStop() -> onDestroy()
  • ActivityA: onRestart() -> onStart() -> onResume()

Android四大组件

Android应用程序的核心构建块,每个组件都有其独特的生命周期和用途。

Activity

  • 作用: 负责与用户进行交互,提供可视化的用户界面。
  • 特点: 一个应用程序可以有多个Activity,它们之间可以相互跳转。

Service

  • 作用: 在后台执行长时间运行的操作,不提供用户界面。
  • 特点: 即使应用程序切换到后台,服务仍然可以继续运行。

Broadcast Receiver

  • 作用: 接收来自系统或其他应用程序的广播消息。
  • 特点: 可以用于响应系统事件,例如电量变化、网络连接等。

Content Provider

  • 作用: 提供了一种机制,允许应用程序之间共享数据。
  • 特点: 可以对数据访问进行权限控制。

Android多线程

Android应用程序默认运行在主线程上,为了避免阻塞主线程导致ANR(应用程序无响应),需要使用多线程来处理耗时操作。

线程创建方式

  • 继承Thread类: 重写run()方法。
  • 实现Runnable接口: 实现run()方法,并将其传递给Thread类的构造函数。

线程间通信

  • Handler: 用于将消息发送到主线程或其他线程的消息队列。
  • AsyncTask: 简化了后台线程与主线程的交互。
  • Looper: 每个线程都有一个Looper,用于循环处理消息队列。

内存泄漏

内存泄漏是指应用程序不再使用的对象仍然被引用,导致内存无法被垃圾回收机制回收,最终可能导致应用程序崩溃。

常见内存泄漏场景

  • 静态变量持有Activity实例: 静态变量的生命周期与应用程序一致,如果持有Activity实例,会导致Activity无法被回收。
  • 内部类持有外部类引用: 非静态内部类会持有外部类引用,如果内部类实例的生命周期超过外部类实例,会导致外部类实例无法被回收。
  • 资源未关闭: 例如文件、数据库连接等,使用完毕后应及时关闭,否则会造成内存泄漏。

内存泄漏检测工具

  • LeakCanary: 一个开源的内存泄漏检测库,可以自动检测并报告内存泄漏问题。
  • Android Studio Profiler: Android Studio自带的性能分析工具,可以用于监测内存使用情况和检测内存泄漏。

其他常见面试题

Android系统架构

Android系统架构采用分层架构,从上到下依次为:

  • 应用层: 包含各种应用程序。
  • 应用框架层: 提供应用程序开发所需的各种API。
  • 系统运行库层: 提供核心库和虚拟机。
  • Linux内核层: 提供底层操作系统功能。

ANR异常

ANR(应用程序无响应)是指应用程序在主线程上执行了耗时操作,导致用户界面无法响应用户输入。

MVC、MVP、MVVM架构模式

  • MVC: 将应用程序分为模型、视图和控制器三部分。
  • MVP: 将视图和模型完全解耦,通过Presenter进行交互。
  • MVVM: 使用数据绑定机制将视图和模型绑定在一起。

用户评论
请输入评论内容
评分:
暂无评论