鸿洋

其他

Android Native内存越多,会不会触发GC?

本文作者作者:Pika链接:https://juejin.cn/post/7432327923213205555本文由作者授权发布。最近都在更新鸿蒙相关的话题,android的文章比较少,我们来聊一个Android中有趣的话题,还是GC。1一个有趣的话题我们都知道Java虚拟机中都会有垃圾回收机制(GC),有了垃圾回收机制的存在,虚拟机可以根据策略去回收一些被释放的Java对象,从而保证整个内存的空间不至于无限增长,一般的策略就是看Java虚拟机中的内存空间大小占比去决定要不要进行GC,那么问题来了,Native中分配的内存,会不会影响虚拟机的GC回收策略呢?换句话来说,Native内存越多,会不会触发GC?答案是,会的,ART虚拟机中有这种机制,不过可以说是“间接的”。2ART中关于Native内存占用导致的GC在ART
11月22日 上午 8:36
其他

鸿蒙纪·系列教程#03 | 沉浸状态栏与资源使用

.backgroundColor(Color.Transparent)}2.常量数值资源对于一些全局的常量资源,我们可以统一配置在资源中,方便统一维护,比如字体大小、颜色、字符串等。防止在
11月21日 上午 8:35
其他

Android系统native进程之我是installd进程

1本文摘要这是Android系统进程系列的第五篇文章,本文同样以自述的方式带您了解installd进程,通过本文您将了解到linstalld进程为啥存在?以及在安装/卸载apk中发挥了哪些作用。(文中的代码是基于android13)Android系统进程系列的前四篇文章如下:Android系统native进程之我是init进程Android系统native进程之属性能力的设计魅力Android系统native进程之进程杀手--lmkdAndroid系统native进程之日志系统--logd、logcat2我是谁installd:“大家好啊,我是你们的新朋友,我的名字叫installd。大家应该还记得lmkd、logd进程吧,我和它们都有共同的"父亲"init进程,因此我也是一个系统native进程。咱们先来互动下有哪位能从我的名字猜出我的工作职责吗?”一个进程抢先答到:“这还不简单,你的名字是installd,installd应该是installd
11月20日 上午 8:35
其他

安卓应用跳转回流的统一和复用

作为一个功能复杂的应用,无法避免地需要支持众多路径的回流,比如从Launcher、从Push通知、从端外H5、从合作第三方App以及从系统资源分享组件等。我们知道,不同的回流路径会通过App的不同入口,带着不同的参数打开应用。而应用需要根据不同的回流路径,及其参数要求,跳转到目标页面,并完成完成相应的操作。在跳转到目标页面时,回流过程往往会被启动页、登入页、新手引导、升级、主页等条件检测和页面中断,导致无法顺利地完成目标页面的跳转和相应的操作。整个回流过程如果不统一设计,代码会因为涉及的回流入口多,回流操作多,回流中断多,以及业务需求地不断增加和变更,变得复杂且高耦合。所以,接下来我们就从端外回流过程面临的4个问题,来一步步进行方案设计:如何解决所有回流入口传入的数据,放到同一个处理入口,方便后续回流的统一管理?如何约定一套回流协议,让所有回流入口的相似需求,可以复用页面跳转和控制实现?如何支持回流过程中的条件检测,以及检测中断后的回流恢复?如何融合回流的复用设计和中断恢复设计?1回流入口统一常见业务回流场景为了更好地理解应用的端外回流的具体业务场景,我用社交应用的回流场景为例说明一下:从图中我们可以大致了解到几个业务常见的回流流程:用户从桌面Launcher打开应用,经过Splash页,最后进入应用MainPage主页;用户通过端外H5页,下载安装,并打开App。通过启动页后,先登入,再进行个人信息设置、喜好设置、推荐好友、应用MainPage页,最后进入用户主页,或H5活动页等;用户通过点击系统通知栏的Push通知,打开应用并跳转到Push指定页,如,用户主页、H5活动页、Feed详情页等;用户浏览器中的端外H5分享页,直接进入到应用内的用户主页,Feed详情页等;用户从第三方App,通过分享ShareSDK,分享Url和图片到应用中,进入到Feed发布页;用户从系统分享组件中,分享URL网页到Feed发布页。统一回流处理入口上面举例的这么多回流入口,能不能都统一到一个入口去处理呢?这是我们统一回流方案首先要解决的问题。除了系统分享组件回流入口外,其它回流入口,只要和各合作方协商约定好,都是可以通过
11月19日 上午 8:35
其他

一文搞懂Window、PhoneWindow、DercorView、WindowManager

本文摘要通过本文您可以了解PhoneWindow,Window,DecorView,WindowManager,WindowManagerImpl,WindowManagerGlobal这些类及它们的作用。(文中代码基于Android13)1“名不符实”的Window类1.1
11月18日 上午 8:35
其他

一个大型 Android 项目的模块划分哲学

最近几天忙着搬家,代码几乎没怎么写,趁着周日晚上有点空来水一篇文章。大概两年前决定自己做个独立的项目作为未来几年的空余时间消磨利器,并且在其中尝试使用各种最新技术,然后业务也比较复杂(不然也不能做这么久),现在项目迭代了这么久,也上架一段时间了,打算写点文章大概介绍下里面用到的一些技术和思路。现在项目中大概有十几个模块,拆分模块的主要目的是为了降低未来的修改成本,同时模块的拆分也能反映出技术架构和业务架构。目前项目的模块关系图大概如下图所示。上图中的所有同层级的模块都是平行模块,这意味着它们不会互相依赖,模块的依赖关系按照图中箭头的方向单向依赖。1理解业务不同的软件有不同的业务,模块设计应该因地制宜,一个好的设计一定是需要先充分理解业务的。如果两个模块在业务上就有依赖关系,那么一定要在软件架构上体现出来。一些原本就有耦合关系的业务但是在软件架构中却彻底分离,这会给未来带来无穷无尽的麻烦。在理解业务的基础之上可以进行业务形式化建模,在对业务有了足够充分的认知之后再进行软件架构设计,业务架构和软件架构尽可能保持一致。比如目前国内很多项目中都在使用的路由框架就承担了解除耦合的责任,架构中把一些看起来关系不大的模块做拆分,然后通过路由框架进行通信,实际上造成了业务边界和关系的混乱。因为通过路由跳转就意味着业务有关联,既然业务上有关联那么架构上也应该有所体现,原本可以简单的通过语法来约束和表达的事情最后却只能用
11月15日 上午 8:35
其他

理解Android WebView的加载流程与事件回调

在Android开发中,WebView用于显示网页和执行JavaScript。理解其加载流程和事件回调对于开发一个功能丰富且用户友好的基于Web的应用至关重要。本文将详细介绍
11月13日 上午 8:35
其他

鸿蒙系列教程#02 | 从计数器认识布局基础

将驾轻就熟。计数器是我非常喜欢的一个小案例,点击按钮使界面上的数字增加。它虽然非常简单,但麻雀虽小五脏俱全。从中可以了解界面编程的基本布局特性,也可以了解事件的回调以及界面数据更新的方式:1.
11月12日 上午 8:35
其他

Android H5页面性能分析策略

引言在移动应用开发中,H5页面的性能直接影响到用户体验。本文将详细介绍如何在Android环境下,通过拦截资源加载请求、注入JavaScript代码、使用vConsole工具以及抓包分析等方法,对H5页面的性能进行分析和优化。1拦截资源加载请求以优化性能在Android的WebView中,可以通过覆盖WebViewClient的shouldInterceptRequest方法来拦截每个资源的加载请求。然后,我们可以自己处理这个请求,例如通过HttpURLConnection或者OkHttp来下载资源,并计算下载速度。以下是基本示例:webView.setWebViewClient(new
11月11日 上午 8:35
其他

AndroidManifest中uses-library怎么起作用的?

前言阅读该篇之前,建议先阅读下面的系列文章:Android深入理解包管理--PackageManagerService和它的“小伙伴”Android深入理解包管理--记录存储模块本文摘要这是包管理系列的第三篇文章,本文同样采用自述的方式来介绍共享库模块。共享库模块是PackageManagerService服务的其中一个模块,通过本文您将了解共享库是啥?共享库模块是如何管理共享库的以及共享库管理模块在PackageManagerService中发挥了哪些作用?共享库如何被其他apk使用的。(文中代码基于Android13)本文大纲1.
11月7日 上午 8:35
其他

进阶篇|大厂常用的启动优化有哪些?

本文作者:九心,原文发布于:九心说。前言之前有和各位同学分享过启动的两篇文章:第一篇《Android启动这些事儿,你都拎得清吗?》从源码的角度分析了启动流程。第二篇《进阶应用启动分析,这一篇就够了!》讲了如何使用工具测量启动流程。今天我将结合自己的过往工作经验,分享一下常见的启动优化和一些黑科技的实操。1准备在正式讲优化的方法之前,默认各位同学已经掌握了:启动的源码分析。启动时长的监控。因为在实际的分析过程,一定是我们懂得了自己应用的启动阶段的各个耗时点,然后对这些流程分析,最终做出针对性的优化策略。最简单来讲,我们自己的应用的启动时长怎么定义的,启动的开始点在哪里,结束点在哪里。举个例子,我们App之前定义的两个点:开始点:拦截的
11月4日 上午 8:35
其他

鸿蒙中是如何实现UI自动刷新的?

本文作者作者:Pika链接:https://juejin.cn/post/7380357384776073266本文由作者授权发布。1文章介绍从前几篇文章中,我们了解到ArkUI中针对UI进行刷新处理流程,对于应用开发者来说,ArkUI把驱动UI刷新的一系列操作通过状态管理装饰器,比如@State,@Prop等暴露给开发者,通过引用这些装饰器修改的变量,我们能够实现自动的UI刷新处理。值得注意的是,本章会涉及到api
11月1日 上午 8:35
其他

Android从上帝视角来看PackageManagerService

前言阅读该篇之前,建议先阅读下面的系列文章:Android深入理解包管理--PackageManagerService和它的“小伙伴”Android深入理解包管理--记录存储模块Android深入理解包管理--共享库模块Android深入理解包管理---apk信息本文摘要这是包管理系列的最后一篇文章,本文的标题是从上帝视角来看PackageManagerService,为啥要起这么“狂妄”的名字呢?其主要的原因是我希望从一个更全面、更高的、更清晰的视角来看明白PackageManagerService的每个模块之间是如何协作来保证PackageManagerService的关键工作顺利完成。通过本文您将了解到PackageManagerService被划分为哪些模块,模块之间是如何协作来保证各项工作的顺利完成。(文中代码基于Android13)1模块划分其实在Android深入理解包管理--PackageManagerService和它的“小伙伴”这篇文章已经介绍过PackageManagerService的各个模块了,但是我还是希望把它们重新“请”出来,以保证后面的内容能顺利连接起来。(当然增加了快照管理模块)先简单介绍下PackageManagerService,它是运行于systemserver进程,systemserver进程中有很多很多的服务,比如大家熟知的ActivityManagerService、WindowManagerService。而PackageManagerService也是一个服务,一个非常非常重要的服务。下图展示了PackageManagerService的几个关键模块主要模块有apk管理模块、权限管理模块、共享库模块、记录存储模块、所有apk信息模块、四大组件模块。PackageManagerService不可能只有上面的几个模块,它还有快照模块、对外接口模块、property模块等,只不过上面的模块较常见。1.1
10月31日 上午 8:35
自由知乎 自由微博
其他

深入探索 APKTool:Android 应用的反编译与重打包工具

文件包含了应用的所有编译后资源数据,如字符串、样式、主题等。这个文件的主要作用是在运行时为应用提供所需的资源,同时优化了资源的访问速度和效率。文件的主要组成部分包括:resources.arsc
10月30日 上午 8:35
其他

Gradle配置,Android应用签名详解

本文作者作者:yechaoa链接:https://juejin.cn/post/7404778275019407412本文由作者授权发布。1签名简介应用签名是一种数字签名,主要用来验证应用的完整性以及发布者身份认证。在Android应用发布之前非常重要的一环就是应用签名,Android系统要求所有APK在安装到设备上或更新之前都必须使用证书进行数字签名,Android系统会验证应用的签名。版本更新时,新版本APK必须使用相同密钥签名,否则无法覆盖安装;如果签名变更,也无法更新应用,必须卸载重新安装。可见签名对Android应用发布的重要性。2签名文件在Android中,签名一般包含三个信息,密钥库、秘钥和证书,在应用首次发布时,我们可以借助Android
10月28日 上午 8:35
其他

Android Gradle Plugin插件详解

}关注点1主要作用就是获取所有的产品变体和buildTypes,创建对应的变体列表。关注点2:createTaskManager。抽象方法在子类AppPlugin中实现:protected
10月25日 上午 8:35
其他

简洁高效:类抖音视频列表设计思路

本文作者作者:麦客奥德彪链接:https://juejin.cn/post/7348464590159773748本文由作者授权发布。列表类产品现在非常多,可以说是10个APP中9个是有列表功能的,今天要说的是视频、直播类切换类型的负责业务解耦。具体业务场景可以用抖音短视频为例,只讨论其实现方式。这种类型的产品一般实现方式有两种。1常见此种逻辑的代码实现1.1
10月24日 上午 8:35
其他

【Android】谷歌为什么不帮我默认实现啊,ImageGetter 和 TagHandler 的作用与区别

本文作者作者:Newki链接:https://juejin.cn/post/7413274784484130828本文由作者授权发布。因为本文是手机发布的,所以随便找了张自己拍的照片当封面。前言在
10月23日 上午 8:35
其他

好用的HarmonyOS Next 横向、纵向下拉刷新控件

本文作者作者:钟睿链接:https://juejin.cn/post/7395866502716702755本文由作者授权发布。前言在移动端下拉刷新和上拉加载属于高频使用的功能,目前官方提供的Refresh组件自定义效果有限,很难满足各家产品个性化定制的要求。下面我们从0到1打造一个无入侵性、可自定义扩展的下拉刷新组件(源码地址和使用教程链接在文末)1目标特点1.无入侵性,不需要传数据源2.不限制组件,支持任意布局(List,Grid,Web,Scroll,Text,Row,Column等布局)3.支持header和footer个性化视图扩展(支持Lottie动画)4.支持垂直列表和横向列表的刷新和加载5.支持下拉(或者上拉)打开其他页面2效果图垂直列表垂直List列表刷新效果:垂直Grid列表刷新效果:下拉打开其他页面:自动刷新:Web视图刷新效果:自定义动画刷新效果:Lottie动画刷新效果:横向列表刷新:三种横向模式header效果图(footer同理)header正常横向header宽度固定,高度撑满header布局逆时针旋转90°header宽度撑满,高度固定和垂直列表布局方式一致header布局顺时针旋转90°header宽度撑满,高度固定和垂直列表布局方式一致缺省页设置(加载中,空数据,加载失败,无网络)3实现第1步通过自定义布局构建下拉刷新视图结构/*这里的header,content,footer视图,全部由外部传入*///header视图@BuilderParam
10月22日 上午 8:35
其他

Perfetto 快速上手指南

https://raw.githubusercontent.com/google/perfetto/master/tools/record_android_tracechmod
10月16日 上午 8:35
其他

移动端跨平台方案的实现,鸿蒙ArkUI的技术选择?

本文作者作者:Pika链接:https://juejin.cn/post/7370008254719639591本文由作者授权发布。1番外篇在学习完前面几篇关于ArkUI的文章后,我们来学习一篇番外篇,主要讲述鸿蒙发展的历程以及相关跨平台技术的发展,了解ArkUI背后的设计思路以及与跨平台技术的关系这些年,写过Compose,也了解过Flutte、ReactNative
10月14日 上午 8:35
其他

裁员在家如何保持高效学习

分钟的倒计时,完整之后看一眼时间,自己计算休息时间。另外非常建议大家多做冥想。因为冥想是一种重塑大脑,改变意识形态的练习,可以减轻压力,提高创造力和专注力。之前我也不是很懂这个,后面看到
10月12日 上午 8:35
其他

PackageManagerService和它的6个“小伙伴”

前言作为本系列文章的首篇文章,在开始之前我一直在思考,首篇文章应该写啥内容?才能让读者很容易明白PackageManagerService是啥呢,如何为后面文章起到承上启下的作用呢。后来我决定以介绍PackageManagerService服务中的各种繁多复杂的数据类为开篇,理由是数据类是基础,故数据类先行。遂开始一顿猛的输出,当即将接近尾声的时候,我发现不对啊,假如我是一个对PackageManagerService完全没接触的人,刚一上来就看到这么多非常陌生的数据类,那完全就是一种懵逼的感觉啊。于是我决定重新规划,以介绍PackageManagerService及它包含的模块为首篇,这样即使对PackageManagerService陌生的人,也能先对它有一个初步的认识。同时后面的文章中会逐步深入的介绍PackageManagerService的内容。本文摘要这里的包管理指的是PackageManagerService这个服务,本篇是包管理系列文章的第一篇,既然整个系列文章都在介绍PackageManagerService,那本篇就带大家先认识一下PackageManagerService,通过本文您将了解PackageManagerService是啥,它被划分为哪些主要模块,这些模块之间又有啥关系。(文中代码基于Android13)1我是一个服务大家好,我的名字叫PackageManagerService,如果觉得这名字太长大家可以叫我的小名PMS,我运行于systemserver进程,systemserver进程中有很多很多的服务,比如大家熟知的ActivityManagerService、WindowManagerService。而我也是一个服务,一个非常非常重要的服务。上面多次提到一个词服务,那它到底意味着啥呢?那我就来给大家解释下,在Android中进程之间的通信用的最多的是鼎鼎大名的binder,而binder是client/server模式,也就是binder分为client端和server端,server端可以提供各种服务供多个client端使用。因此服务这个词就是指binder的server端,也就是说我PMS提供了包管理相关的功能,其他进程如果要想使用的话可以通过binder通信来“呼我”。既然提到了包管理,其中包指的就是一个apk,那包管理也可以理解为对apk的管理,那PMS对apk主要进行以下几项管理:apk的安装/更新/卸载:这三件事情我全权交给PackageInstallerService,关于apk安装可以查看apk安装这篇文章。apk信息查询,啥是apk信息查询呢?比如想要知道当前Android设备都安装了哪些apk,可以来我这取;再比如想要知道某个apk都包含了哪些四大组件,也可以来我这取。apk权限管理,基本每个被安装的apk都是需要申请一些权限的,那这些权限是被用户授权了呢,还是被用户拒绝了呢,都可以来找我。我把这个事情交给PermissionManagerService来管理。可别小看了我,我可不是只负责上面的这些事情,只不过上面这些事情经常用到,故只罗列了它们而已。。我就是一个运行于systemserver进程对apk进行管理的非常重要的服务。介绍完我自己,我觉得非常有必要介绍一下我管理的对象apk,你们人类有句话是这样说的:对自己的管理对象没有深入了解的领导不是一个好领导。并且对apk有一个深入了解后,再来理解我就更容易了。(对apk熟悉的话该部分可以跳过)1我管理的对象我管理的对象apk,是
10月11日 上午 8:35
其他

鸿蒙版 React Native 正式开源,ohos_react_native 了解一下

的正式发布也不远了。参考资料:https://gitee.com/openharmony-sig/ohos_react_native最后推荐一下我做的网站,玩Android:
10月8日 上午 8:36
其他

Android 15 正式发布到 AOSP ,来了解下新特性和适配需求

API对手势导航条无影响。对于三按键导航栏:默认情况下,不透明度(Opacity)设置为80%,颜色和窗口背景色匹配。应用布局在导航栏后面,除非应用适配三键导航栏的
9月27日 上午 8:35
其他

Jetpack PDF库:解锁Android应用中的PDF功能

的几种方式:AndroidPdfViewerhttps://github.com/DImuthuUpe/AndroidPdfViewer在之前大部分选择的还是第二种和第三种方案来实现
9月26日 上午 8:35
其他

面试官:你对插件化有什么了解?

本文作者:九心,原文发布于:九心说。背景插件化的诞生是为了解决什么问题?我们不妨好好思考一下,作为客户端开发,平时工作中是否为这样的情况发愁:核心业务功能迭代的时候,千小心,万小心,又是做AB,又是做灰度,最后线上还是出问题了,这个时候只能靠发版解决问题,奈何客户端的发版周期长,并且只有用户升级以后才能解决问题。有些业务上线以来,用的人不多,占用的包体积还不小,这些功能是否可以动态加载。开发一个功能,必须提交到应用商店以后,用户才能更新(涉及到监管)。所以说,插件化设计之初就是为了不安装新Apk,从而完成应用的更新迭代。我之前所在的团队也做了插件化,主要的原因还是包体积的诉求,原因有两个:厂商预装的时候包体积的强制诉求:如果不做插件化,就需要每年预装阶段持续投入人力优化包体积,成本比较高。对外投放的时候,小包有利于提高用户的转化。转换率上图是2018年谷歌IO披露的包体积与下载转化率之间的关系,时至今日,即使我们的网络状况已经有了很好的提升,但是优化包体积仍然是我们的目标,比如说:线下推广的时候用户的网络是不稳定的。对于线上广告投放,用户不可能一直在wifi下,小的包体积可以让用户更快的进入应用内,避免劝退用户。所以我们可以看到,pdd这一方面做的很出色,仅有25m。1插件化难点讲插件化之前,我们先科普一下其中的概念。对于一个完整功能的App,我们可以将其划分成为很多模块,每个模块都可以将其划分成为一个Apk。然后将基础功能的Apk提交给应用市场上架,后续我们可以通过基础的Apk,下载其他模块的Apk,从而完成功能的扩展。基础分包在整个过程中,我们称提交给应用市场的Apk为宿主,其他模块的Apk称之为插件。相信没接触过插件化的同学可能会有一些疑问,我们平时打包的时候不是都是一个完整的Apk,为什么可以加载一个单独的Apk?好了,这就是插件化的第一个难点。2加载插件Apk作为一个Android开发,我们都知道Android里面的Davilk和Art虚拟机和Java虚拟机不是同一套,所以他们也有着不同的类加载结构。我们先回顾一下。1.
9月24日 上午 8:35
其他

Google 为何设计了如此难用的 ArrayMap

存储已被回收但还可重用的内部存储结构。这包括一组预先定义的对象缓存队列,用来存储不同大小的数组。当需要分配新的数组时,首先尝试从缓存中获取,而不是直接进行新的内存分配:private
9月20日 上午 8:35
其他

Android14 WMS/AMS 窗口层级结构解析

33-35。特征描述:支持全屏幕缩放的图层,和上面的不同,这个是全屏缩放,前面那个可以局部。ImePlaceholder拥有特征的层级:13-14。特征描述:输入法相关。DisplayArea
9月19日 上午 8:35
其他

一款高效的HarmonyOS工具包

本文作者作者:旺旺崔冰冰链接:https://gitee.com/yunkss/ef-tool本文由作者授权发布。1简介efTool是一个功能丰富且易用的兼容API12的HarmonyOS工具库,通过诸多实用工具类的使用,旨在帮助开发者快速、便捷地完成各类开发任务。这些封装的工具涵盖了字符串、数字、集合、JSON等一系列操作,可以满足各种不同的开发需求。本人为Java开发,故封装思路借鉴Java的工具类Hutool,同时扩展了HarmonyOS的UI组件。我很欢迎大家进行二次开发以及共建鸿蒙生态,如需二次开发,还请大家在引用时注明出处,万分感谢。你可以引入使用,也可以拷贝和修改使用,如需分享扩展。希望可以注明原出处即可。也希望能把bug及时反馈回来。全新2.0版本进行了模块化拆分,详细使用手册已迁移至各个模块。子模块目录总览eftool名称的由来eftool
9月18日 上午 8:35
其他

Android主线程锁监控的一种方案

去年处理一些性能问题的时候,遇到过一些主线程等待锁的问题,如果主线程等待锁的时间太长,就会出现主线程卡顿甚至ANR。所以我们需要通过技术手段去检测可能存在的锁等待。1技术基础如何检测主线程等待锁?这里涉及一些技术基础知识点:线程状态Java线程可以通过
9月14日 上午 8:35
其他

systemserver进程监控者--watchdog

本文摘要本文同样采用自述的方式来介绍systemserver进程的监控者watchdog,通过本文您将了解watchdog的作用,它是如何工作的。(文中代码基于Android13)1我是谁我的名字叫watchdog,翻译为中文是看门狗,说实话我不喜欢这个名字,大家叫我进程监控者吧,这名字才符合我做的事情,我运行在一个单独的线程同时我也是单例,也就是在systemserver进程只有我一个实例,谁要是想使用我就调用我的
9月12日 上午 8:35
其他

Room数据库使用一些坑

deleteAllUsers();}方法3:使用WorkManager进行后台操作对于需要长时间运行或者大量数据的删除操作,推荐将其放在后台进行,以避免影响主线程和用户体验。你可以使用Android
9月11日 上午 8:35
其他

Harmony:关于鸿蒙系统的内容都总结在这里了

跨平台新技术;这或许对于客户端、前端开发者来说是一个很好的就业方向及机遇。问题2:难不难学?鸿蒙系统的开发框架几乎是采用当前较为流行的开发模式:可读性高的JS、声明式UI,对于有一定经验的客户端
9月10日 上午 8:35
其他

学完ASM Tree api,再也不怕hook了

方法头:即标识一个方法的基本属性,包括:access(作用域),name(方法名),desc(方法签名),signature(泛型签名),exceptions(方法可以抛出的异常)
9月6日 上午 8:35
其他

面试题:为什么使用 Bundle 而不使用 HashMap

本文作者作者:程序员DHL链接:https://juejin.cn/post/7408379631093219379本文由作者授权发布。Bundle
9月5日 上午 9:02
其他

Android14 VSync 机制深入解读

/frameworks/native/services/surfaceflinger/Scheduler/Scheduler.cppScheduler::Scheduler(ICompositor&
9月4日 上午 8:35
其他

为什么大部分程序员都在今年冲软考?

血泪教训啊!!原来每年,80%的软考人没拿证都折在了这些问题:❎论文被卡,缺乏项目经验;❎时间太少,啃教材毫无重点;❎考点太多,与实际工作联系少;❎机考太难,没提前熟悉
9月3日 上午 8:40
其他

Android 15 上适配 16K Page Size 的填坑思路,以 IJKPlayer 为例子

还提供了有用算法和容器的通用实现,例如容器提供了在程序中存储数据然后查找、排序和对该数据执行其他计算的简单方法:std::sort(container.begin(),
8月26日 上午 8:36
其他

Android Surface截图方法总结

本文作者作者:时光少年链接:https://juejin.cn/post/7398748051878084648本文由作者授权发布。前言说起Surface截图,很多人一个惯性思维是使用MediaProjection框架,但是有点杀鸡使用宰牛刀的问题,实际上,MediaProjection往往需要申请权限,其录制范围包括第三方app,但是如果是自身app,实际上完全没有必要,仅仅使用DisplayManager创建虚拟屏即可,连权限都不需要申请。实际上,Android
8月23日 上午 8:35
其他

推荐个App:直达开源啦!

,包含详尽的知识体系、好用的工具,还有本公众号文章合集,欢迎体验和收藏!推荐阅读:Android大脑--systemserver进程5年了,ViewPager2
8月22日 上午 8:35
其他

Android大脑--systemserver进程

本文摘要系统native进程的文章就先告一段落了,从这篇文章开始写Java层的文章,本文同样延续自述的方式来介绍systemserver进程,通过本文您将了解到systemserver进程是啥?它包含那么多的服务,是如何管理它们的?如何启动它们的?(文中代码基于Android13)本文大纲:1.
8月20日 上午 8:35
其他

5年了,ViewPager2 终于支持 overScrollMode,没错,我干的。

本文作者作者:Mr_万能胶链接:https://juejin.cn/post/7394463308379045951本文由作者授权发布。注意标题中的我,指的是本文作者Mr_万能胶,大家可以去掘金瞻仰。这两周给
8月19日 上午 8:36
其他

Kotlin新特性:Context receivers将被废弃

{}那我们可以怎么做呢?官方建议我们通过明确参数或者扩展成员函数的方式来实现。明确参数原代码如下所示:context(ContextReceiverType)fun
8月16日 上午 8:35
其他

一文看懂DecorView的一生

DecorView是Android应用程序中所有视图的根视图。它是框架用来管理和显示应用程序界面的核心组件之一。理解DecorView的创建流程对于理解Android视图系统的运作方式至关重要。1简介DecorView的主要角色是作为顶层容器,承载着应用的视图结构。当在应用中使用setContentView方法加载布局时,实际上是将这个布局作为子视图添加到DecorView中。因此,DecorView定义了应用界面的边界,所有的视图都在这个边界内进行绘制和事件分发。下面我们来说一下,DecorView与Window、Activity和ViewRootImpl之间的关系,这能够更好地帮助我们理解应用的视图层次结构。与Window的关系Window是Android中的一个抽象概念,代表着屏幕上的一块区域,可以用来显示视图。每个Activity都会被赋予一个Window,而这个Window则负责承载DecorView。简单来说,Window是一个显示DecorView的容器。在Android中,Window和View通过WindowManager服务来管理,WindowManager负责将Window(及其包含的DecorView)放置到屏幕上的正确位置。与Activity的关系Activity是Android应用中的一个基本组件,负责创建用户界面。每个Activity都会有一个与之关联的Window,而这个Window则承载着DecorView。在Activity的生命周期中,当调用setContentView方法时,系统就会开始构建视图层次结构,将指定的布局文件加载到当前Activity的Window所关联的DecorView中。与ViewRootImpl的关系ViewRootImpl是Android
8月15日 上午 8:35
其他

LeakCanary 你真的了解么?看看这些高级用法

,感兴趣的同学可以自取。https://gist.github.com/madroidmaq/9207e24820838ccc0b1a2558d83df7ef5总结首先,正常在
8月13日 上午 8:35
其他

详解Android14 Activity 启动过程

的接口:startActivityfinishActivityactivityResumedactivityPausedactivityStoppedactivityDestroyed//
8月12日 上午 8:35
其他

不同版本上 Bitmap 内存分配与回收对比

机制升级到引用机制后稳定性略有提升,或者将来从引用机制升级到某个更优秀的机制,不管怎么升级,兜底策略永远是兜底策略,它永远不会也不能替换主要策略:在不需要使用资源时立即释放资源。举个例子,Glide
8月9日 上午 8:35
其他

别滥用FileProvider了,Android中FileProvider的各种场景应用

本文作者作者:newki链接:https://juejin.cn/post/7140166121595863076本文由作者授权发布。前言有部分同学只要是上传或者下载,只要用到了文件,不管三七二十一写个
8月8日 上午 8:35
其他

凡猿修仙传:斩杀ClassNotFoundException when unmarshalling Crash

本文作者作者:三雒链接:https://juejin.cn/post/7385736245090615333本文由作者授权发布。1写在前面大家好,我是三雒(luo)。今天水一篇最近我们应用内发生的大规模Crash,
8月7日 上午 8:35