自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。

2024-09-08 08:54:25 347

原创 模板方法模式

是一种行为设计模式,它定义了一个算法的骨架,将某些步骤延迟到子类中实现。通过模板方法,子类可以重定义算法的某些步骤,而不会改变算法的结构。

2024-09-07 14:17:21 395

原创 命令模式(Command Pattern)

(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以使用不同的请求、队列或日志来参数化对象。命令模式让你可以在不修改调用对象的情况下将请求排队、记录日志或撤销操作。

2024-09-06 16:43:46 695

原创 代理模式(权限、远程调用、延迟加载、日志和缓存)

代理模式通过代理对象控制对真实对象的访问,既可以提高系统的安全性和可控性,也可以减少客户端和真实对象之间的耦合。干饭村的约会系统通过代理模式保护用户的个人资料,保证只有自己能够修改资料,而其他人只能查看和打分,从而增强系统的安全性和公平性。RMI 的核心思想是让客户端可以透明地调用位于远程服务器上的方法,就像调用本地对象的方法一样。在实现时,接口用于定义服务契约,客户端和服务器都依赖接口进行通信。

2024-09-05 19:46:52 976

原创 组合模式(Composite Pattern)

通过使用组合模式,Menu和MenuItem都被视为Waitress只需要一个对象即可遍历所有菜单和菜单项。这使得代码非常灵活,易于扩展和维护。

2024-09-05 17:03:25 407

原创 迭代器设计模式

Iterator通过使用迭代器设计模式,我们可以轻松地遍历不同的菜单实现,并将它们合并输出,保持了代码的扩展性和灵活性,便于后续添加更多类型的菜单。

2024-09-05 15:32:37 507

原创 观察者模式

SubjectObserver观察者模式很好地解耦了数据源(气象站)和观察者(显示面板)。通过这种模式,当气象站的数据变化时,所有观察者都会自动收到通知并更新显示,扩展性好且易于维护。

2024-09-05 14:15:06 634

原创 享元模式(Flyweight Pattern)

享元模式通过共享对象来减少内存消耗,特别适用于大量细粒度对象的场景。然而,在使用享元模式时,需要注意区分对象的内部状态(共享部分)和外部状态(不共享部分),以确保对象的正确性和一致性。

2024-09-04 16:23:57 422

原创 extends 和 implements的区别

extends用于类与类之间(或接口与接口之间)的继承关系。implements用于类实现接口,类必须实现接口中的所有方法。

2024-09-03 21:07:34 189

原创 Android源码中的部分设计模式

Android源码中广泛使用了多种设计模式,以解决不同场景下的架构设计需求。以下是几个常见的设计模式及其在Android中的应用:1. 单例模式 (Singleton Pattern)应用: 单例模式确保一个类只有一个实例,并提供一个全局访问点。示例:Context: Context 类的实现(尤其是 ApplicationContext)经常以单例的方式使用,以确保全局唯一的应用上下文实例。ActivityManager: ActivityManager 是 Android 中管理应用进程和活

2024-09-03 17:26:31 1016

原创 原型模式(Prototype Pattern)

原型模式(Prototype Pattern)是一种创建型设计模式,它允许你复制已有对象而无需使代码依赖它们所属的类。通常用于当创建对象的代价较高时,使用原型模式可以快速生成新对象。

2024-09-03 17:22:35 447

原创 装饰器模式(Decorator Pattern)

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地给对象添加新的行为,而不改变其结构。

2024-09-03 17:21:58 397

原创 适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类一起工作。适配器模式通过将类的接口转换为客户期望的另一个接口,使原本接口不兼容的类可以合作。

2024-09-03 14:47:44 512

原创 部分设计模式(java语言版本)

在不破坏封装性的前提下,捕获对象的内部状态,并在该对象之外保存这个状态,以便日后恢复对象到之前的状态。: 将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而无法一起工作的类可以协同工作。实例来避免创建过多的对象,从而节省内存。: 为请求创建一系列处理对象,每个处理对象决定是否处理请求或将请求传递到链上的下一个对象。: 定义对象间的一对多依赖,一个对象改变状态时,所有依赖的对象都会收到通知并自动更新。: 将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。

2024-09-03 14:23:32 1528

原创 View和ViewGroup

ViewGroup@Override// 布局子视图i++) {// 简单布局:将所有子视图叠放在一起@Overridei++) {View: 是 UI 组件的基类,负责绘制和事件处理。ViewGroup: 是一个容器,继承自View,用于管理和布局其子视图。关系ViewGroup继承自View,具有View的所有特性,并增加了对子视图的管理功能。它们通过继承和组合的方式密切相关。通过理解View和ViewGroup。

2024-08-31 11:31:12 361

原创 如何处理多点触控、滑动手势,以及如何通过 `MotionEvent` 获取触摸的详细信息(如坐标、压力、手指的数量等)

多点触控: 通过的和等方法处理多个触摸点的信息。滑动手势: 计算触摸点的移动距离(dx和dy),并实现滑动手势。触摸详细信息: 通过获取触摸点的坐标、压力、大小等信息,并在中处理这些信息。通过这些方法,你可以实现复杂的触摸交互,并根据需要处理各种手势和触摸事件。

2024-08-30 10:00:37 329

原创 如何使用 Canvas 和 Paint 进行绘制,以及如何处理自定义属性和解析 XML 属性

Canvas: 提供了绘制各种形状、图像、文本的方法。Paint: 定义了绘制内容的颜色、线条样式、文本样式等。自定义属性: 可以通过定义,使用TypedArray解析,并在 XML 布局文件中配置。通过这两个类和自定义属性的结合,你可以创建功能丰富且可配置的自定义视图,并且可以在项目中复用这些视图。

2024-08-29 21:27:52 721

原创 Android实现自定义方向盘-8自定义view的相关问题

这些问题帮助面试官评估你在开发复杂自定义控件时的能力,包括如何处理事件、动画、性能、适配、状态管理和组件间的协作。通过展现你在这些方面的理解和解决方案,你将能够证明自己在 Android 开发中的高水平和丰富经验。

2024-08-29 19:15:27 1313

原创 Android实现自定义方向盘-7livedata,viewmodel相关问题

关于ViewModelLiveDataSingleton模式和跨Activity数据共享的相关面试题通常会涉及 Android 架构组件、状态管理和数据持久化等方面的知识。

2024-08-29 18:28:16 1210

原创 Android实现自定义方向盘-6mvvm传递数据

通过Singleton模式的类,你可以确保在整个应用程序的生命周期内共享数据,并且这些数据在任何Activity中都可以访问和更新。这种方法可以避免转换为的问题,同时实现了跨Activity的数据共享。

2024-08-29 18:06:29 695

原创 Android实现自定义方向盘-5livedata实现

在。

2024-08-29 15:19:58 1388

原创 Android实现自定义方向盘-4解决触摸时指针跳跃的问题

为了解决点击指针时,指针跳转至反方向的问题,我们可以采取的方式,即只有当用户执行明显的拖拽动作时才更新方向盘的角度。这样可以避免单击或短距离移动时,指针突然跳转到反方向的问题。

2024-08-29 15:02:09 649

原创 Android实现自定义方向盘-3添加平滑处理

为了使陀螺仪数据更加平滑和稳定,可以通过应用低通滤波器或使用滑动平均法来减少噪声。以下是如何在现有的代码基础上添加平滑处理的详细步骤。

2024-08-29 14:51:36 441

原创 Android实现自定义方向盘-2添加陀螺仪

为。

2024-08-29 14:41:06 459

原创 导入AppCompatActivity和Activity的区别

和Activity都是 Android 中的核心组件,用于定义一个屏幕(Activity),但它们有一些重要的区别,特别是在兼容性和功能扩展方面。

2024-08-29 13:11:20 445

原创 Android实现自定义方向盘

创建一个继承自。

2024-08-29 10:40:24 503

原创 IntentService和JobIntentService已弃用,替代方案用WorkManager

已经在 Android API 30 (Android 11) 中被标记为过时(deprecated)。这意味着虽然你仍然可以在现有代码中使用它,但在未来的 Android 版本中它可能会被完全移除或不再被推荐使用。

2024-08-27 12:11:22 376

原创 java class default 关键字

接口的默认方法是否被执行,取决于实现类是否重写了该方法以及在运行时如何调用它。如果实现类没有重写默认方法,并且调用了这个方法,那么默认方法才会被执行。

2024-08-16 13:06:33 402

原创 Activity启动过程

Activity是Android应用程序的四大组件之一,负责应用程序的用户界面。Activity的启动可以通过应用内部或外部(如Launcher)触发。启动过程包括Intent的创建、传递、处理以及Activity的创建和显示等多个步骤。Activity的启动过程是一个复杂而有序的过程,涉及Intent的创建与传递、Instrumentation的介入、AMS的接收与处理、进程管理以及Activity的创建与显示等多个环节。这些环节共同协作,确保了Activity能够顺利启动并展示给用户。

2024-08-05 11:28:30 630

原创 Binder机制的原理

Binder机制是Android系统中一种高效、安全、可靠的进程间通信机制。它通过Binder驱动、Binder服务和Binder代理等组件实现了不同进程间的数据交换和通信。Binder机制采用内存映射和一次拷贝技术提高了通信效率,并通过在内核中添加可靠的进程身份标识提高了安全性。这使得Android系统能够高效地处理各种跨进程通信场景,如Activity与Service之间的通信、跨应用程序的数据交换等。

2024-08-05 10:43:49 393

原创 认识Android Handler

Android Handler” 通常指的是 Android 开发中的Handler类,它是 Android SDK 的一部分,用于管理消息队列和线程之间的通信。它在 Android 开发中非常有用,特别是在计划消息和可运行对象(Runnables)在未来某个时间点执行时。

2024-08-04 21:58:21 603

原创 聊聊Android的Binder

Binder 是 Android 平台中的一个关键组件,负责实现进程间通信(IPC)。它提供了一种高效的方式让不同进程中的应用程序进行交互,是 Android 系统的核心之一。

2024-08-04 19:46:43 1226

原创 AIDL简介

AIDL(Android Interface Definition Language) 是 Android 提供的一种工具,用于定义进程间通信(IPC)接口。AIDL 允许你在不同的应用或不同的进程之间通信,尤其是在服务和客户端应用之间。它用于跨进程调用,支持复杂的数据类型(如对象和集合)的传递。AIDL 的主要作用是帮助开发者定义一个接口,使得不同的 Android 进程能够进行方法调用,就像调用本地方法一样。Android 进程间的通信通过 Binder 机制实现,AIDL 是对这种机制的高层封装。通常

2024-08-04 18:33:40 893

原创 ListView与recycleView对比

ListView依赖于机制和手动的 ViewHolder 模式来实现视图复用,开发者需要手动管理视图的回收和复用过程。强制使用 ViewHolder 模式,并通过内部的Recycler类来高效管理视图的缓存和复用。RecyclerView 的缓存机制更为灵活和高效,支持多种视图类型的高效复用和管理。总的来说,RecyclerView 的设计更加现代化,能够更好地处理复杂的列表需求,并提供了更好的性能和扩展性。

2024-08-04 16:50:10 726

原创 ListView的使用、原理、优化

/@Override// 添加数据到 items 列表ListView 是一个简洁有效的控件,适用于简单列表展示场景。通过理解其工作原理和应用最佳实践,可以有效地优化其性能并提升用户体验。在需要更复杂的布局和高效性能时,推荐使用 RecyclerView。

2024-08-04 16:35:53 797

原创 recycleview的使用、原理、优化

RecyclerView 是一个强大的控件,适合处理大数据集和复杂的布局需求。通过理解 RecyclerView 的原理并实施相应的优化策略,可以显著提高应用的性能和用户体验。

2024-08-04 16:19:25 696

原创 自定义动画

Android 提供了一些预定义的动画,可以在 XML 中定义,并通过加载。: 控制透明度的变化。: 控制缩放的变化。: 控制位置的变化。: 控制旋转的变化。在res/anim目录中创建一个 XML 文件如果内置的动画类型不能满足需求,可以自定义。通过实现接口,开发者可以定义如何计算动画的中间值。@Override// 使用自定义的 ArgbEvaluator 进行颜色渐变动画});自定义动画可以极大地增强应用的用户体验,使界面更加生动和富有交互性。

2024-08-04 16:02:37 252

原创 自定义ViewGroup

继承 ViewGroup 类自定义 ViewGroup 需要继承ViewGroup类。通过继承 ViewGroup,可以创建自定义的视图容器,并控制其中子视图的布局方式。重写构造方法与自定义 View 类似,自定义 ViewGroup 需要提供多个构造方法来支持从代码和 XML 文件中实例化。重写 onMeasure 方法方法用于测量 ViewGroup 及其子视图的。

2024-08-04 16:01:17 158

原创 自定义view

继承 View 类:自定义 View 通常是通过继承View类或其子类来创建的。可以选择继承最基础的View类,也可以继承更复杂的控件,如TextView或。重写构造方法:自定义 View 需要重写至少一个构造方法,通常重写三个构造方法:一个接受Context对象,一个接受Context和对象,还有一个接受Context和。这些构造方法主要用于初始化 View。重写 onDraw 方法方法是绘制自定义 View 的核心方法。在这里,可以使用Canvas对象绘制图形、文本等内容。注意,onDraw。

2024-08-04 15:48:38 257

原创 关于JNI的相关面试题

关于JNI(Java Native Interface)的面试题,可以涵盖多个方面,包括JNI的基本概念、工作原理、使用场景、常见问题及解决方案等。

2024-08-04 13:41:07 894

空空如也

空空如也

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

TA关注的人

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