Android 中高级开发核心面试题与解析
前言
本文整理了 Android 中高级开发岗位的高频面试题,涵盖 Java 基础、Android 核心机制、系统框架、性能优化及音视频算法等方向。内容基于实际面试经验总结,旨在帮助开发者系统复习技术栈,提升面试通过率。
一、Android 核心机制
1. Activity 的启动方式
Activity 的 LaunchMode 决定了实例在任务栈中的行为:
- standard:默认模式。每次启动都创建新实例,不管栈中是否已存在。
- singleTop:如果目标 Activity 位于栈顶,则复用该实例并调用
onNewIntent;否则创建新实例。 - singleTask:栈内复用。若栈中存在该实例,则将该实例之上的所有 Activity 出栈,并调用
onNewIntent。同时具有 clearTop 机制。 - singleInstance:独占一个任务栈。该 Activity 是栈中唯一的实例,其他应用可通过 Intent 共享此全局唯一实例。
2. Handler 防止内存泄漏
Handler 导致内存泄漏的原因在于其内部持有 Looper 和 MessageQueue,且非静态匿名类会隐式持有外部 Activity 引用。
解决方案:
- 将 Handler 声明为静态内部类。
- 使用 WeakReference 持有 Activity 引用。
- 在 Activity 销毁时移除回调和消息。
public class MyActivity extends AppCompatActivity {
private static class MyHandler extends Handler {
private final WeakReference<MyActivity> mActivityRef;
public MyHandler(MyActivity activity) {
mActivityRef = new WeakReference<>(activity);
}
@Override
public void handleMessage(Message msg) {
MyActivity activity = mActivityRef.get();
(activity != ) {
}
}
}
MyHandler mHandler;
{
.onCreate(savedInstanceState);
mHandler = ();
}
{
.onDestroy();
(mHandler != ) {
mHandler.removeCallbacksAndMessages();
}
}
}


