Android必知必会
文章平均质量分 90
Android相关的知识,包括android基础知识,Android相关框架,如Dagger2&hilt,retrofit相关使用等
职场007
共享共赢,互利共生,尊重原创,勇于创新
展开
-
Android gradle kts 8.0以上版本配置签名和修改APK输出名字
之前写过一篇文章是通过Kotlin的Dsl结合gradle编写的插件来管理项目依赖,我是从一个开源项目叫DanDanPlayAndroid项目上学到的,那时还没有使用toml文件来管理项目依赖的技术。不过虽然现在有了toml文件管理依赖的技术,但我觉得使用插件的方式也很好,读者自己选择吧。这里提这个插件的原因就是在插件中涉及到修改输出的APK名字和签名配置的问题,在最新的gradle kts 版本中,这些配置有点小变化,所以在此处记录下。原创 2024-06-05 20:42:41 · 1120 阅读 · 1 评论 -
基于Ubuntu的Bash脚本实现SystemUI的编译真机验证
当开发SystemUI的时候,开发完一个需求后需要到真机上验证,虽然SystemUI模块开发最后的产物也是APK,但是这个APK 却不能单独安装查看效果,因为SystemUI是系统级别的应用,需要放置到系统指定的目录下。然后再通过top命令找出SystemUI的进程,使用kill命令杀一次进程让其重启,这样我们的修改才能生效。这个过程比较的繁琐,如果每次修改都需要操作这么多的步骤,那么效率就很低了,所以本文介绍使用bash脚本的方式,将这一系列的操作通过bash脚本描述出来,我们下次修改完SystemUI代原创 2024-05-27 13:22:25 · 409 阅读 · 0 评论 -
Android AOSP Ubuntu源码编译电脑卡顿问题定位解决
开发SystemUI时,使用内存为16G的主机,Ubuntu 20.04的系统编译SystemUI的源码,编译的过程中发现电脑卡顿,鼠标不能移动。必须重启电脑才可以使用,如果继续编译代码,还是会出现卡顿的问题,严重影响开发效率。最后通过设置交换分区解决了这个问题。本文介绍的就是如何发现及解决这个问题。原创 2024-05-11 21:08:33 · 1083 阅读 · 0 评论 -
Android AOSP探索之Ubantu下Toolbox的安装
由于最近需要进军android的framework,所以需要工具的支持,所以在此记录下从同事那里学来的ubantu 系统下Toolbox的安装,分享给准备研习android的小伙伴们原创 2024-05-01 21:47:59 · 1010 阅读 · 4 评论 -
设计模式之创建型模式---建造者模式
建造者模式是一种广泛使用的设计模式,在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式:可复用面向对象软件基础》中被提及,它的定义为,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式目前主要有两种,一种是经典的建造者模式,另外一种是变种的建造者模式。本文就是介绍建造者模式的两种形态的Java实现。原创 2024-04-09 21:15:54 · 1247 阅读 · 0 评论 -
Jetpack Startup 优雅完成库的初始化和方法接口简化
Startup允许库的开发者和App的开发者共享一个ContentProvider,用于完成各自的初始化逻辑,并且支持设置组件之间的初始化顺序。因此可以做到无需用户调用初始化方法就能获取到安卓上下文原创 2023-12-13 20:19:53 · 942 阅读 · 0 评论 -
Android 使用Kotlin封装RecyclerView
在一个开源项目上看到了一个Android Kotlin版的RecyclerView封装,个人觉得非常方便,所以就将这个封装摘了出来,记录下,方便以后使用,这个开源的项目叫[DanDanPlayForAndroid](https://github.com/xyoye/DanDanPlayForAndroid)点击链接可以查看具体的开源项目代码。原创 2023-09-30 22:58:48 · 1621 阅读 · 0 评论 -
Android Jetpack Compose 使用 ViewModel
所以,在复杂的业务逻辑下,我们可以将Stateful的状态提到ViewModel中管理,这样Stateful Composable也就变成了一个Stateless Composable,通过参数传入不同的ViewModel即可替换具体的业务逻辑,大大增加了可复用性和可测试性原创 2023-09-13 13:22:32 · 1452 阅读 · 2 评论 -
Android Jetpack Compose之状态持久化与恢复
我们都知道remember可以缓存创建状态,避免因为重组而丢失。使用remember缓存的状态虽然可以跨越重组,但是不能跨Activity或者跨进程。比如横竖屏切换等ConfigiurationChanged事件发生时,假设没有重写对应的onConfigurationChanged函数,Activity就会被销毁重建,导致remember保存的状态丢失。为了解决这个问题,Compose提供了rememberSavable解决这个问题原创 2023-09-11 13:41:54 · 568 阅读 · 0 评论 -
框架开发使用注解处理器APT优雅提效
注解处理器(Annotation Process Tool)顾名思义就是一种处理注解的工具,它可以极大的优化我们平时写的冗余代码,比较典型的就是Android开发者经常写的findViewById,这原创 2023-07-16 12:25:21 · 127 阅读 · 0 评论 -
将Android进行到底之内容提供者(ContentProvider)
随着现在的应用越做越大,出现了多进程的架构,因为Android的应用能申请的内存是有限制的,所以很多APP为了能够最大程度的保证自己的应用能够逃脱系统的围杀,设计出多进程架构,让App可以多使用几份内存。但是由于进程间内存是不共享的。所以需要做进程间的通信(IPC)。而Android进程间的通信有很多种。比如socket,基于Binder的AIDL以及ContentProvider等,而本章内容要介绍的就是内容提供者(ContentProvider)原创 2023-01-02 16:35:34 · 1460 阅读 · 0 评论 -
将Android进行到底之广播(Broadcast)
在VR的开发中,Android的广播扮演着很重要的角色,因为我们的VR开发中显示的Launcher界面通常是使用Unity3d开发的,所以很多时候当我们想要在VR眼镜中,去调试我们的功能的时候。想象下,以前我们是直接在Android上显示,在Activity中写个Button就行了,但是遇到咱们到了VR眼镜中,要调试的时候,就不能直接在眼镜中让Unity3d的同事给你加个调试的按钮吧,人家也没那时间给你加下图就是使用Unity3d渲染出来的Launcher 界面。原创 2022-11-12 23:17:49 · 2676 阅读 · 0 评论 -
将Android进行到底之服务(service)
我们都知道,字节最近发布了PICO4VR眼镜,我买了一个,体验还行。因为我也是做VR眼镜的Android应用层开发的,所以想把自己项目中遇到的一些Android技术分享给读者。近些年随着VR眼镜的兴起,Android的的服务(Service)和广播(Broadcast)以及内容提供者(Content Provider)越来越被重用,相反Activity这个曾经很吃香的组件在VR眼镜的开发过程中却用的不多。原创 2022-11-07 00:30:43 · 1760 阅读 · 8 评论 -
将Android进行到底之Dagger2(三)
上一篇文章我们了解了如何注入第三方框架到对象以及利用Dagger2实现单例。但是我们注入到时候都是只用了一个组件ApplicationComponent实现的注入,这样的话咱们的对象的作用域就只能固定一个,假如我们需要定义另一个作用域的对象,比如一个全局作用域的单和一个局部作用域的单例时该怎么做呢?相信聪明的读者都能想到那就是再定义一个组件,声明作用域范围,但是这样的话组件间就独立了,可能会出现重复定义的情况。这时就需要组件之间可以复用,这也是本篇文章的重点,下面咱们就看下如何实现组件之间的复用吧。...原创 2022-08-12 08:26:15 · 382 阅读 · 0 评论 -
将Android进行到底之Dagger2(二)
上一篇文章介绍了如何使用IOC和依赖注入,以及如何使用Dagger2注入对象,但是只能为项目中创建的类提供依赖注入。那么问题来了,我们在做项目开发时,经常需要引入第三方框架,那么我们想要使用Dagger2注入第三方框架的对象时应该怎么做呢?我们如何使用Dagger2去实现单例呢?本篇文章会给你答案。以上就是今天要讲的内容,看完这两篇博客,相信读者已经可以使用Dagger2的依赖注入去实现注入本项目中类的对象以及第三方框架中类的对象了。.........原创 2022-08-09 15:45:20 · 710 阅读 · 2 评论 -
将Android进行到底之Dagger2(一)
当前我们开发软件大多都是使用面向对象的思想。将我们想要操作的对象抽象成类,使用的时候再根据类实例化出我们想要操作的对象,再通过对这些对象的管理和组合操作,最终形成咱们想要的软件。而一个软件是否优秀就取决于对组成软件对各个对象的管理和组合是否合理。各个对象之间的耦合度是否足够低。而这些可以使用dagger2和hilt这类的依赖注入框架很好的实现低耦合的软件系统............原创 2022-08-07 23:22:52 · 1932 阅读 · 0 评论 -
Android 进程间通信机制binder原理
Android的binder机制在面试的时候经常被问到,说明它对咱们android开发非常的重要,咱们Android的系统中很多地方都使用了binder的通信,而说到binder,咱们就不得不提进程间的通信(IPC),那为什么需要进程间的通信呢?进程间的通信有啥好处和优势?读完本篇文章,相信你会得到答案。这个比较简单,我们大家都知道操作系统在最初的时候是单进程的,也就是一个操作系统上面只能跑一个进程。到后面随着技术的发展,所以有了多进程。...原创 2022-07-21 15:54:55 · 1643 阅读 · 0 评论 -
Java序列化Serializable和Android序列化Parcelable区别
作用:序列化的作用时为了保存对象的属性到本地文件、数据库,网络流等以方便数据等传输,这个传输可以是程序内的,也可以是两个程序间的(进程间通信)实现:Serializable使用反射技术,在运行期间产生临时对象。而parcelable是以Ibinder通信作为载体因为Serializable使用的是反射技术,而parcelable使用的是IBinder作为消息载体,所以parcelable的性能比serializable好,在内存开销方面小,但是这并不表示serializable可以被parcelable取原创 2022-07-04 12:37:32 · 350 阅读 · 0 评论 -
根据热门面试题分析Android事件分发机制(二)---事件冲突分析处理
事件冲突一般发生在父view和子view的组合中,比如说viewpager和listview的组合中。产生事件冲突的原因是一个事件(down,up,move)到来时,有时候我们希望是Aview处理,但是却是Bview处理。这样就导致了我们想处理事件的view收不到事件,不想处理事件的view收到了事件。而解决冲突就是我们通过viewGroup的onInterceptTouchEvent()方法去合理的分发事件,让想处理事件的view收到事件,不想处理的view躺平啥也不做。...原创 2022-07-03 10:04:41 · 479 阅读 · 0 评论 -
根据热门面试题分析Android事件分发机制(一)
如果用户设置了onTouchListener,onTouchEvent,onClickListener时,会首先执行onTouchListener中的onTouch方法,然后根据onTouch的返回结果判断是否执行onTouchEvent,假设onTouch()返回false,继续执行onTouchEvent(),在onTouchEvent方法的ACTION_UP中执行ClickListener的onClick方法原创 2022-07-02 15:21:03 · 1634 阅读 · 0 评论 -
将Android进行到底之Activity
在现在的VR行业中,大多数都是基于Android系统,但是曾经使用频率很高的组件ACTIVITY现在在VR中基本不用,因为VR眼镜的显示大多数使用的是Unity3D 来做的3D 页面。Activity更多的是做一些测试页面。尽管这样我们还是需要简单的看看这个组件,刚入行的小萌新一定要看这个组件。本文中只是简单粗暴的例举了Activity中的一些概念,不熟悉的读者需要自己多去写,多熟悉。基础一定要打牢,这样在后面的工作中才能事半工倍。原创 2022-06-26 00:16:23 · 959 阅读 · 0 评论