自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Android面试之观察者设计模式

观察者模式是一种常见的设计模式,用于定义对象间的一对多依赖关系。在Android开发中,观察者模式被广泛应用于解耦UI层和业务逻辑层,使代码更易于维护和扩展。:如果被观察者没有正确地移除不再需要的观察者,可能导致内存泄漏。:被观察者状态变化时,会自动通知所有观察者,保持系统的一致性。:可以在运行时动态添加或移除观察者,灵活应对变化的需求。:如果观察者数量过多,通知过程可能比较耗时,影响性能。:观察者接收通知的顺序不确定,可能导致一些时序问题。:观察者和被观察者之间是松耦合的,便于维护和扩展。

2026-01-30 15:02:13 167

原创 Android面试之单例设计模式

(如网络、数据库、配置中心),避免重复创建对象造成的性能和内存浪费。,但应避免滥用,结合依赖注入(如 Dagger)可降低耦合度。,并提供统一的访问入口。通过 DCL 保证多线程安全,避免重复初始化引擎。:使用枚举单例防御反射与反序列化攻击。利用 JVM 类加载机制保证安全。防止指令重排序,确保线程安全。:优先 DCL 或静态内部类。(延迟加载 + 高并发安全)(推荐,延迟加载且线程安全)(最安全,防反射/反序列化):类内部持有唯一实例引用。(类加载即创建,线程安全)Context 而非。

2026-01-29 17:04:10 41

原创 Android面试之网络请求

在 Android 开发中,网络请求是一个常见的需求。本文将介绍如何在 Android Studio 中使用 HttpURLConnection、OkHttp 和 Retrofit 进行网络请求。HttpURLConnection 是 Android 提供的一个类,用于发送和接收 HTTP 请求。OkHttp 是一个流行的开源 HTTP 客户端,提供了简单高效的方式进行 HTTP 请求。Retrofit 是一个基于 OkHttp 的强大且易于使用的网络请求库。

2026-01-27 17:04:19 74

原创 Android面试之反射机制

是Java语言的一种动态特性,允许在运行时获取类的详细信息并调用其方法和属性。反射机制在Android开发中也有广泛应用,特别是在需要动态加载类或调用隐藏API时。反射机制允许在运行时获取类的所有属性和方法,并调用这些方法和属性。通过反射机制,开发者可以在不修改源码的情况下访问和操作系统隐藏的类和方法,从而实现更多功能。在运行时判断任意一个类所具有的成员变量和方法。在运行时判断任意一个对象所属的类。在运行时调用任意一个对象的方法。在运行时构造任意一个类的对象。类:代表类的成员变量。类:代表类的构造方法。

2026-01-23 11:39:29 53

原创 Android面试之内存优化

使用 Glide/Coil 自动管理 Bitmap 内存,或手动设置。:将 WebView、后台服务放入独立进程,降低主进程内存压力。这样可有效降低 OOM 风险,提升应用的稳定性与用户体验。通过系统化优化,可以显著提升应用稳定性与流畅度。:生命周期感知,避免因配置变更导致的重复加载与泄漏。缓存常用数据或 Bitmap,减少重复加载。:分析 Java 与 Native 内存占用。:使用弱引用或生命周期感知组件避免泄漏。避免内存抖动与低效数据结构。:减少一次性加载数据量。,应改为成员变量复用。

2026-01-22 13:34:58 62

原创 Android面试之内存泄漏

在onDestroy()中removeView()、stopLoading()、setWebViewClient(null)、destroy()并置null。在onDestroy()中调用removeCallbacksAndMessages(null)或cancel()清理任务。: 遵循“谁注册,谁反注册”,在onDestroy()或onStop()中注销。: 使用LruCache或WeakHashMap,并在onTrimMemory()清理。中定义为非静态内部类,并执行延迟任务或耗时操作。

2026-01-21 16:15:05 280

原创 Android面试之四大组件

每个Activity通常对应一个屏幕页面,负责界面展示与用户交互。例如微信的聊天界面、朋友圈页面等都是不同的Activity。它们共同构成Android应用的运行骨架,合理组合可实现功能丰富且高效的应用架构。被称为“四大组件”,它们是构建应用的核心基础,各自承担不同职责并协同工作。,用于接收系统或应用发出的广播事件,如网络变化、电量低等。,适合执行长时间任务,如音乐播放、文件下载等。启动,供其他组件绑定交互,全部解绑后销毁。中声明,应用未运行也能接收。,通过URI标识数据,提供。启动,任务完成或调用。

2026-01-20 15:03:33 355

原创 Android面试之MVC、MVP、MVVM的区别

在 MVVM 中,View 和 ViewModel 通过数据绑定进行通信,ViewModel 不直接持有 View 的引用。在 Android 开发中,MVC、MVP 和 MVVM 是三种常见的架构模式,它们各自有不同的特点和适用场景。MVC、MVP 和 MVVM 各有优缺点,选择合适的架构模式需要根据项目的具体需求和团队的技术栈来决定。在 MVP 中,Activity 只负责展示界面,所有的业务逻辑都交给 Presenter。ViewModel 不持有 View 的引用,减少了内存泄漏的风险。

2026-01-16 15:51:49 352

原创 Android面试之动效

Android 提供了三种主要的动画类型:帧动画(Frame Animation)、视图动画(View Animation)和属性动画(Property Animation)。总结来说,Android 的动画系统提供了丰富的功能,可以帮助开发者创建各种动画效果,从而提升应用的用户体验。无论是简单的帧动画,还是复杂的属性动画,Android 都提供了相应的工具和框架来实现开发者的设计意图。属性动画提供了更多的控制,例如可以设置动画的插值器和估值器,以控制动画的播放速度和值的变化方式。

2026-01-15 17:40:37 48

原创 Android面试之aidl

是一种工具,用于简化 Android 中的进程间通信 (IPC)。通过 AIDL,开发者可以定义跨进程访问的接口,Android SDK 工具会自动生成相应的 Java 接口文件,从而实现高效的 IPC 通信。它适用于需要多线程处理的场景,尤其是当服务需要被不同应用访问时。AIDL 的调用可以是同步的,也可以通过。通过 AIDL,开发者可以高效地实现 Android 应用间的进程通信,同时保持代码的简洁性和可维护性。:接口发布后需保持向后兼容,避免破坏已有客户端。:尽量减少数据传输量,避免使用复杂对象。

2026-01-14 17:15:19 62

原创 Android面试之String、StringBuffer与StringBuilder的区别

比 String 高,但同步开销使其略慢于 StringBuilder。:字符串内容固定、作为常量池共享、HashMap 键等。:与 StringBuffer 相同,可直接修改原对象。上有明显差异,选择合适的类能显著提升性能与内存效率。在 Android中,这三者都是字符串处理类,但在。:一旦创建内容不可更改,任何修改都会生成新对象。:天然线程安全,可在多线程中安全共享。:最高,适合频繁拼接的单线程场景。:无同步机制,单线程性能最佳。循环拼接必须用可变类,避免。:可在原对象上修改内容。

2026-01-13 14:42:18 49

原创 Android面试之自定义控件流程

这样即可在 Android 中灵活地为自定义控件设置布局文件,并实现个性化 UI 与交互。适用于需要完全控制绘制和交互的控件,如仪表盘、进度条等。适用于在系统控件基础上修改外观或增加功能,例如自定义。中频繁创建对象,优化性能。下面给出详细步骤与示例。中声明自定义属性,通过。在 Android 中为。

2026-01-08 10:13:26 154

原创 Android面试之事件分发机制

通过以上分析,我们可以清楚地了解 Android 事件传递机制的工作原理和实现方式。当事件传递到当前 View 时,首先调用此方法。如果当前 View 或其子 View 处理了事件,则返回。如果某个 View 拦截了此事件,那么在同一个事件序列中,此方法不会被再次调用。在 Android 中,事件传递机制是开发者必须了解的基础知识。当一个点击事件发生时,事件最先传到 Activity 的。方法会遍历所有子 View,并调用子 View 的。,则事件被消费,否则调用。,表示事件已被消费。

2026-01-04 16:50:04 241

原创 Android面试之Handler机制

UI操作必须在主线程执行,子线程需通过主线程Handler切换。:包裹,封装数据(what、arg1、arg2、obj等)。:快递公司,循环取出消息并分发给对应的Handler处理。可通过隐藏API设置同步屏障,让异步消息优先执行。:分拣中心,按时间顺序存放消息(单链表结构)。:队列空闲时执行的回调,可用于低优先级任务。是实现线程间通信的核心工具,常用于。:快递员,负责发送与接收消息。:移除消息,防止内存泄漏。:发送Runnable。:发送Message。在Android中,持有外部类引用,并在。

2025-12-31 16:39:29 255

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除