Android技术
文章平均质量分 81
不入流HarmonyOS开发
这个作者很懒,什么都没留下…
展开
-
【Jetpack】ViewBinding 与 DataBinding的区别
ViewBinding 是 2019 年 Android Studio 3.6 版本 开始使用的 , 其作用是 为 Xml 布局文件 生成绑定类 , 借助该 绑定类 , 可以 快速获取 Xml 中的组件;DataBinding 是 2016 年的 Android Studio 2.0 版本 开始使用的 , 其作用是实现 数据模型 Model 与 视图 View 的绑定 , 该绑定是双向的绑定;集成 DataBinding 编译后的 Apk 要比 ViewBinding 大几十 KB;原创 2023-05-13 21:23:03 · 645 阅读 · 2 评论 -
Android面试指南:说说你对组件化/模块化的理解
library重复依赖的问题算是都解决了,但是我们在开发项目的时候会依赖很多开源库,而这些库每个组件都需要用到,要是每个组件都去依赖一遍也是很麻烦的,尤其是给这些库升级的时候,为了方便我们统一管理第三方库,我们将给给整个工程提供统一的依赖第三方库的入口,前面介绍的Common库的作用之一就是统一依赖开源库,因为其他业务组件都依赖了Common库,所以这些业务组件也就间接依赖了Common所依赖的开源库。我们在抽象 module 时,module 之间是没有相互依赖的,是严格解耦的,为了达到我们复用的目的。原创 2023-05-13 20:44:13 · 614 阅读 · 0 评论 -
Android Jetpack组件化之ORM 数据库访问框架详解
Android 系统中使用的是 SQLite, 使用 Android 提供的 api 访问 SQLite 数据库非常繁琐 , 由此出现了很多 ORM 框架;ORM 英文全称 Object Relational Mapping , 对象关系映射;对象关系映射 ORM 是一种编程技术 , 面向对象编程语言 与 关系型数据库 之间的 映射;原创 2023-05-07 22:12:24 · 574 阅读 · 0 评论 -
Android framework学习指南之Launcher启动过程原理分析
Launcher是一个用来显示系统中已经安装的应用程序的应用程序,Launcher 在启动过程中会请求PackageManagerService 返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序,它的作用主要有两点一个是启动应用程序一个是显示和管理应用程序的快捷图标或者其他桌面组件。原创 2023-05-06 22:03:22 · 758 阅读 · 0 评论 -
Android车载开发为什么要掌握SurfaceFlinger
在现代汽车中,车载智能座舱系统的使用越来越常见,因为它能提供音乐,导航,驾驶辅助等多项功能。而这些功能的实现都离不开底层硬件和系统软件的支持。其中最关键的两个技术就是Vsync信号和SurfaceFlinger信号机制。综上所述,Vsync信号和SurfaceFlinger刷新机制是车载智能座舱系统中保证画面流畅且高效显示的关键技术。Vsync信号通过与GPU的垂直同步来减少屏幕撕裂和过度绘制,从而提高应用程序的渲染效率。原创 2023-04-28 20:36:24 · 114 阅读 · 0 评论 -
Android性能优化之图片优化详解
目前移动端Android平台原生支持的图片格式主要有:JPEG、PNG、GIF、BMP、和WebP(自从Android 4.0开始支持),原创 2023-04-26 21:14:25 · 537 阅读 · 0 评论 -
Android开发中Flutter网络请求的3种实现方法
*注意:**Dio的get请求(baseUrl都是在dio.option.baseUrl设置的) 请求头可以在dio.option上设置,也可以在新建的option上设置,新建option是可选的。2.2.2. dio – 方式二(baseUrl都是在dio.option.baseUrl设置的)**注意:**直接在 dio.options设置除methods以外的 请求头参数。**注意点:**请求参数需要编码后放在request中。**注意:**在新建的option上设置请求头参数。原创 2023-04-25 21:28:24 · 1138 阅读 · 0 评论 -
Android音视频开发-OpenGL ES正交投影实现方法
但同时会发现当处于横屏时,又要处理传入的x坐标的值,显然这不是一个好的方案。需要补充的是,上面的参数near、far的含义指的是和视点的距离,视点貌似到目前还未接触到,它指的是摄像机的位置,和实际生活中用相机看物体一样,从不同的角度和位置拍摄同一个物体获得的照片肯定是不一样的,摄像机位置用setLookAtM函数指定。实际上,对于一个物体来说它有它自身的坐标,这个空间称为物体空间,也就是设计物体的时候采用的一个坐标空间,物体的几何中心在坐标原点上,归一化后坐标范围在[-1,1]之间,x和y轴分度是一致的。原创 2023-04-23 21:54:47 · 615 阅读 · 0 评论 -
Android音视频开发-如何用OPENGL ES绘制圆柱体
设置圆柱体的控制属性,主要包括纹理、高度、截面半径、截面角度切分单位和高度切分单位,这些属性用于控制圆柱体的大小 *定义各个圆柱体绘制类的三角形绘制方法和工具方法 *实现圆柱体的线性会执法,线性会执法和三角形会执法顶点的获取方法相同,只是采用的绘制顶点顺序和渲染方法不同,并且先行绘制没有光照和纹理贴图。*指定屏幕所要显示的假面,并对见、界面进行相关设置 *为Activity设置恢复处理,当Acitvity恢复设置时显示界面同样应该恢复 *当Activity暂停设置时,显示界面同样应该暂停。原创 2023-04-23 21:43:22 · 139 阅读 · 0 评论 -
Android开发如何进行网络优化?
根据网络状态对网络请求进行区别对待,2G与Wifi状态下网络质量肯定是不一样的,那对应的网络策略也应该是不一样的。例如:在Wifi场景下可以进行数据的预取、一些统计的集中上传等;而在2G场景下此类操作以及网络请求的次数策略都应该调低。网络状态可以由TelephonyManager.getNetworkType()方法获取到。原创 2023-04-20 20:55:37 · 270 阅读 · 0 评论 -
【Android实战开发】flutter实现网络请求的方法示例
它会监视我们项目中文件的变化,并且在需要时自动构建必要的文件。通过在我们的项目根目录下运行flutter packages pub run build_runner build,我们可以在需要时为我们的model生成json序列化代码。这触发了一次性构建,它通过我们的源文件,挑选相关的并为它们生成必要的序列化代码。这个是最底层类封装了一个静态的请求方法,直接调用dio的request方法进行网路请求,很简单。数据是使用的聚合数据的API,影讯API合集,大家可以注册个账号,申请使用一下,像这样。原创 2023-04-18 21:03:42 · 580 阅读 · 0 评论 -
Android UI布局优化之include、merge与ViewStub标签的巧用方法
在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性、复杂度也会随之增长。相信大家经常听到include、merge、ViewStub这样的标签,官方也提到这三种布局可用于布局的优化。今天就介绍下这三种布局的使用,记录下来,便于后续app中的使用。include布局重用。原创 2023-04-18 20:47:54 · 522 阅读 · 0 评论 -
Android四大组件之 Activity的启动过程源码解析
Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二者想要说清楚,恐怕又要写两篇长文,更何况分析它们的源码呢。不过本文的侧重点不是它们,我要介绍的是一个Activity典型的启动过程,本文会从源码的角度对其进行分析。我们知道,当startActivity被调用的时候,可以启动一个Activity,但是你知道这个Activity是如何被启动的吗?原创 2023-04-14 21:39:27 · 377 阅读 · 0 评论 -
Android车载开发之使用JNI实现ANDROID和串口通信详解
对串口文件进行配置(波特率等),选择串口文件,打开串口,设备不同 ,可以读写的串口也不同.读写串口 ,读串口需要开一个子线程,然后死循环读取串口发送的数据关闭串口文件其中打开,关闭串口是在jni方法执行,读写操作是android程序执行。原创 2023-04-13 21:09:42 · 357 阅读 · 0 评论 -
Android开发中,自定义注解的两种应用方式
1.基于反射使用注解首先我们的目标是制作一个用户信息表,是一个User对象,表中有其对应的属性,将注解和属性等关联,然后再通过反射拿到对应的注解值和属性值打印,思路如下:1.1. 首先定义两个注解UserAnnotation和UserAttribute,创建一个注解遵循: public @interface 注解名 {方法参数}1.2. 将注解和User对象关联给用户赋值。1.3. 获取注解,打印注解的注解值和属性值。定义注解代码如下将注解和User对象绑定主要通过获取注解打印。原创 2023-04-11 21:13:39 · 587 阅读 · 0 评论 -
kotlin中,::双冒号的使用详解
如下代码中 , 使用 Student::name 代码 , 获取 Student 类的 name 属性类型为 KMutableProperty1 , 获取到该 name 属性的引用 , 相当于 Java 反射中的 Field 对象 , 调用 KMutableProperty1#get 函数 传入 Student 实例对象 , 可以获取该实例对象的 name 属性;调用 类名::函数名 获取的 函数类型 引用 , 其类型是函数类型的 , 如下代码中 ,原创 2023-04-10 21:46:37 · 2080 阅读 · 1 评论 -
Android自定义view实现圆环效果详解
以上所述是小编给大家介绍的Android自定义view实现圆环效果实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。原创 2023-04-09 20:54:59 · 387 阅读 · 0 评论 -
Android开发中kotlin编程语言的一些实用技巧
相信大家都知道,kotlin是kotlin是google力推的用以取代java的android开发语言 ,kotlin使用起来比较方便,同时有许多语法糖,本文主要讲解了一些比较实用的kotlin技巧。一,自定义圆角矩形在项目中,我们常常要定义圆角矩形背景,一般是用自定义drawable实现的 ,但是圆角矩形的背景与圆角常常会有细微的变化,而一旦变化我们又要新创建一个drawable文件,这样就会导致文件爆炸的问题。我们可以利用kotlin的扩展函数,来实现简单方便的圆角矩形背景。原创 2023-04-08 20:39:28 · 485 阅读 · 0 评论 -
Android项目开发中如何避免内存溢出(Out of Memory)
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。原创 2023-04-07 22:09:30 · 460 阅读 · 0 评论 -
Android基础四大组件之Activity的启动过程源码解析
Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二者想要说清楚,恐怕又要写两篇长文,更何况分析它们的源码呢。不过本文的侧重点不是它们,我要介绍的是一个Activity典型的启动过程,本文会从源码的角度对其进行分析。我们知道,当startActivity被调用的时候,可以启动一个Activity,但是你知道这个Activity是如何被启动的吗?原创 2023-04-04 19:24:52 · 622 阅读 · 0 评论 -
Android 性能优化之 LeakCanary使用方法
LeakCanary是Square公司为Android开发者提供的一个自动检测内存泄漏的工具。LeakCanary本质上是一个基于MAT进行Android应用程序内存泄漏自动化检测的的开源工具,我们可以通过集成LeakCanary提供的jar包到自己的工程中,一旦检测到内存泄漏,LeakCanary就会dump Memory信息,并通过另一个进程分析内存泄漏的信息并展示出来,随时发现和定位内存泄漏问题,而不用每次在开发流程中都抽出专人来进行内存泄漏问题检测,极大地方便了Android应用程序的开发。原创 2023-04-03 20:07:06 · 492 阅读 · 0 评论 -
Android开发教程:如何利用Service实现简单的音乐播放
1:“Service” 意思即“服务”的意思, 像 Windows 上面的服务一样,服务是在后台上运行,承担着静悄悄的不为人所注意的工作。在res下新建一个raw的文件夹,将事先下载好的MP3文件放入中,这里的歌曲是我自己下载的是birds.mp3。Android常有的开源框架有哪些框:docs.qq.com/doc/DWHlGYUdseVhsSUda。原创 2023-04-02 20:19:48 · 471 阅读 · 0 评论 -
Android开发之组件GridView简单使用方法
首先我们需要布局文件:1.一个GridView(展示所有图片)2.一个ImageView(选中的图片)其中arry_list只有一个ImageView放图片 代码下面给出。希望本文所述对大家Android程序设计有所帮助。废话不多说先上效果;原创 2023-03-31 20:33:37 · 367 阅读 · 0 评论 -
Android开发中如何使用Rxjava框架实现倒计时功能
的话,那一切都会变得简单。首先我们要在子线程中直接使用发射器,时间间隔设置在1s,然后等主线程接收后更新UI后,倒计时结束时,恢复界面,下面给出在用户注册时获取验证码的,倒计时使用的代码demo。原创 2023-03-30 20:53:10 · 342 阅读 · 0 评论 -
Android系统中,App自动更新的实现步骤
之后在MainActivity的onCreate方法中,调用一下代码即可。新建一个UpdateManager方法,具体内容我已经有详细的注释。弹出下载的进度条的对话框,开始下载,可以上随时点击按钮,停止下载。的数据,看是否是最新版本,是,则无操作,否,则进行以下步骤;以上就是本文的全部内容,希望对大家的学习有所帮助。下载完成后,调用系统安装软件的服务,安装软件。一定要记得在manifest里面加权限哈,弹出是否更新软件的对话框,点击下载后。每次进入主界面时,获取。原创 2023-03-29 20:51:59 · 950 阅读 · 0 评论 -
Android开发如何利用代码控制设备上的音乐播放器播放音乐
这部分的代码主要是为了控制的实现音乐的播放和暂停,有需要的朋友的可以记录下来,方便以后能用到。原创 2023-03-28 20:37:52 · 215 阅读 · 0 评论 -
Android Rxjava框架的原理和使用
本文主要是对RxJava使用及Android常见使用场景进行总结,掌握这些还远远不够,RxJava还有许多强大的功能,诸如从磁盘/内存中获取缓存数据,背压策略,联想搜索优化等等。后面在项目开发中遇到相关场景再进行总结,更新。本文若有不当之处,请批评指正。原创 2023-03-26 22:08:27 · 1213 阅读 · 0 评论 -
Android开发中synchronized的实现原理
**1.修饰实例方法,**作用于当前实例加锁,进入同步代码前要获得当前实例的锁。没有问题的写法:因为这段代码中只输入了一个AccountingSync实例。下面是有问题的写法:在上述代码中出现了一个严重的错误,虽然我们使用了sychronized修饰了increase方法,但new了两个不同的实例对象,这就意味着会出现两个不同的实例对象锁,这样的话ti和t2都会进入各自的对象锁,因此线程安全就得不到保证。想要解决这个问题,就需要将sychronized作用于静态的increase方法。2.修饰静态方法,原创 2023-03-25 22:28:54 · 877 阅读 · 0 评论 -
Android Flutter在点击事件上添加动画效果
在Android App的开发项目中,我们需要在点击事件上实现一个动画效果来提高用户的体验度。比如闲鱼底部中间按钮的那种。该怎么实现呢?一起来看看吧。原创 2023-03-23 21:52:56 · 843 阅读 · 0 评论 -
Android面试题讲解-Android为什么需要Handler
*一次完整的事件发送与处理流程为:**Handler调用sendMessage/post方法,调用其持有的MessageQueue对象的enqueueMessage方法将消息添加到消息队列,looper通过loop()方法会不断的从该MessageQueue中取出Message,并调用Message持有的target(Handler)对象的dispatchMessage方法,进而执行到Handler的handlerMessage或者Runnable的run方法或者额外的callback进行处理。原创 2023-03-23 20:04:37 · 387 阅读 · 1 评论 -
Android 系统程序中如何实现 ActionBar?
ActionBar占用一定屏幕空间,可以使之自动隐藏,但是每次自动隐藏又会导致重新计算屏幕,可以设置其为Overlay模式以把ActionBar放在屏幕的上面而不是顶部。ActionBar是一个显示在屏幕顶部的控件,它包括了在左边显示的应用的logo图标和右边操作菜单的可见项。Android音视频入门到高阶学习笔记:docs.qq.com/doc/DWFFWZHNPTHZVdHFX。Android进阶学习笔记:docs.qq.com/doc/DWHFqVHBMVEJPWUx。您可能感兴趣的学习文章。原创 2023-03-20 21:52:31 · 351 阅读 · 0 评论 -
Android开发自定义搜索框实现源码详解
快速使用目前已经发布至远程Maven,大家可以进行远程依赖使用。1、在你的根项目下的build.gradle文件下,引入maven。2、在你需要使用的Module中build.gradle文件下,引入依赖。具体代码1、xml中引入SearchLayout(搜索框)和SearchList(搜索列表),在实际开发中,根据需求可选择使用,二者是互不关联的。2、代码逻辑,以下是测试代码,如用到实际项目,请以实际项目获取控件为主。) {//搜索内容改变}, {//软键盘点击了搜索})原创 2023-03-19 22:09:36 · 829 阅读 · 1 评论 -
Android 系统项目中如何实现 View 事件分发?
View的dispatchTouchEvent()方法第一次调用由于result为false就会进onTouchEvent()方法,可想而知,它一直找到最里面的那个View就直接调onTouchEvent()方法了,如果还没有找到,那么事件就流失掉了。如果有子控件,就分发给子控件的dispatchTouchEvent()方法,否则就调View的dispatchTouchEvent()方法,我们看一下View的dispatchTouchEvent()方法。这个方法,你就没法拦截了。毕竟要征求子控件的意见。原创 2023-03-17 22:02:45 · 372 阅读 · 0 评论 -
Android 系统开发中如何在后台实现多线程?
这篇文章主要介绍“Android 系统开发中如何在后台实现多线程”,在日常操作中,相信很多同行开发小伙伴在问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android中如何在后台实现多线程”的疑惑有所帮助!后台功能是Android的四大组件之一,其重要程度自然不言而喻,而服务是Android中实现程序后台运行的解决方案,非常适合去执行那些不需要交互,而且要长期运行的任务。而所有的任务默认都是在主线程完成的,也就是说,如果我们没有多线程的编程,就会导致主线程被堵塞多线程。原创 2023-03-16 21:36:31 · 533 阅读 · 0 评论 -
Android 单例模式必知必会
单例模式是运用最广泛的设计模式之一,在应用这个模式时,单例模式的类必须保证只有一个实例存在。原创 2022-11-09 21:31:36 · 434 阅读 · 0 评论 -
JetPack | 深入浅出,详解LiveData的这些事
关于LiveData,在2022尾声的今天,从事 Android 开发的小伙伴一定不会陌生。相应的,关于 LiveData 解析与使用的文章更是数不胜数,其中不乏优秀的创作者,在众多的文章以及前辈面前,本篇也不敢妄谈能写的多么深入,易懂。转载 2022-12-05 14:24:57 · 228 阅读 · 0 评论 -
Android 线程间通信 - Handler 使用篇
Handler,可谓是面试题中的一个霸主了。几乎没有哪家公司,在面试的时候是不问这个问题的。简单一点,问问使用流程,内存泄漏等问题。转载 2022-10-28 15:53:45 · 358 阅读 · 0 评论 -
Kotlin的Collection与Sequence操作?他们之间有什么异同点?
在Android开发中,集合是我们必备的容器,Kotlin的标准库中提供了很多处理集合的方法,而且还提供了两种基于容器的工作方式:Collection 和 Sequence。转载 2022-10-18 22:14:10 · 204 阅读 · 0 评论 -
Android 十六进制状态管理实战
最近需要实现一个状态管理类:在多种场景下,控制一系列的按钮是否可操作。不同场景下,在按钮不可操作的时候,点击弹出对应的Toast。转载 2022-09-27 21:52:43 · 229 阅读 · 0 评论 -
开发一个支持跨平台的 Kotlin 编译器插件
Kotlin IR即Kotlin编译器中间表示,它从数据结构上来说也是一个抽象语法树。因为Kotlin是支持跨平台的,因此有着JVM,Native,JS三个不同的编译器后端,为了在不同的后端之间共享逻辑,以及简化支持新的语言特性所需的工作,Kotiln编译器引入IR的概念转载 2022-09-26 22:10:25 · 588 阅读 · 0 评论