Android
文章平均质量分 80
yihanss
这个作者很懒,什么都没留下…
展开
-
2023新鲜出炉的Android车载操作系统开发揭秘,走过路过不要错过
随着经济慢慢复苏和新能源的崛起,汽车用户需求已经从汽车代步转向了汽车智能化和汽车娱乐化,所以汽车在科技的支持下各方面硬件都在不断地升级,其中最突出的就是车载。Android车载将手机和传统车载结合起来,极大满足了汽车用户的需求,从而产生了,使得许多渴望、追求的Android开发人员的梦想得以实现。为了帮助大家更好的系统学习Android车载,这里分享一份《》,里面包含了等让你轻松上手车载!!!!!!!原创 2023-03-13 22:38:31 · 250 阅读 · 0 评论 -
Android事件从底层传递到Activity过程
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。原创 2023-03-10 17:16:55 · 707 阅读 · 0 评论 -
Android Studio 新特性详解
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。原创 2023-03-09 17:11:42 · 552 阅读 · 0 评论 -
让你易上手的Jetpack DataStore教程
Jetpack DataStore是一种数据存储解决方案,允许使用协议缓存区来存储key-value值或者序列化对象。谷歌的建议是如果当前使用的是的话,可以考虑迁移到DataStore。DataStore和。: 使用键存储和访问数据。此实现不需要预定义的架构,也不确保类型安全。: 将数据作为自定义数据类型的实例进行存储。此实现要求您使用协议缓冲区来定义架构,但可以确保类型安全。首先,我们需要在路径为的目录下一个proto文件中创建预定义架构。关于具体的protobuf语言的使用方法,可以查看这里。原创 2023-03-08 17:46:33 · 450 阅读 · 0 评论 -
手把手教你在Android项目中接入Flutter,在Flutter中使用Android布局
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。原创 2023-03-07 17:46:50 · 4706 阅读 · 0 评论 -
都2023了,还有人不知道Android Framework?
很多开发者对于现在内卷到飞起的环境叫苦连天,在突破内卷这件事上,有不少人把目光放在了车企:车载系统,智能座舱等,看起来是一个不错的方向选择。但是要成功转行,最需要掌握什么技术呢?很明显想要转行车企就必须掌握,但也有人就是想在App开发中卷到底,那看看App开发的招聘要求:没想到吧,不管是想转行还是继续在App开发,都逃不过的魔掌。很多人搞了很久的App开发,但始终停留在表面,技术含量不高,也不关注除了页面之外的技术,殊不知Android开发的核心是Framework。原创 2023-03-06 17:42:07 · 137 阅读 · 0 评论 -
【涨薪必看】2023最新最全Android面试题竟然在这!想要年后跳槽的别错过!
新的一年开始了,很多朋友应该都急切的找工作、忙着跳槽吧。不可否认,近两年由于疫情的冲击,经济不景气,各个行业都呈颓势,Android也不例外。但如今已经春暖花开,Android岗位应该会增多,这又意味着程序员们又会多许多面试机会。在我看来,有时候选择比能力更重要,俗话说:站在风口上,猪都能起飞。对于程序员来说,尽早地做好自己的职业规划,确立发展路线,是很有必要的。我认为,同样的实力,善于发现和判断机会的人,永远占据先机。架构师项目经理管理者。原创 2023-01-29 17:05:08 · 305 阅读 · 0 评论 -
Framework那么重要,拿着这份资料一起进大厂~
有面试过Android社招的朋友应该能够感受到,。由于业务需要,很多在做汽车、电视等其他智能硬件端的公司需要进行定制化的开发工作,这自然。在招聘网站上大家可以看到,Android framework岗位的薪资待遇真的不低:这里我们以Keep为例,他家开出了35-65K·14薪的条件,不过对Android应用层的技术有要求,。如果只是会Android本身那些知识,确实发展上限比较低,不过。原创 2022-12-14 16:30:32 · 83 阅读 · 0 评论 -
Android登录拦截场景-多种实现方式
登录拦截与放行是大部分App开发都会遇到的一个场景,如果你的App有游客模式,但是部分高级功能需要登录之后才能使用。那么我们就需要在用户点击这个操作的时候校验是否登录,当登录完成之后再跳转到指定的页面或弹窗。如果这些入口很多的话,那么我们就需要到处写这些逻辑。比较初级的用法是使用消息总线,当登录完成之后发送对应key消息,然后去完成对应key的事件。原创 2022-11-30 19:11:49 · 422 阅读 · 0 评论 -
我的flutter学习路线,带你一步步进阶成flutter开发工程师
Flutter是Google的UI工具包,可以用同一个代码为移动端、桌面端和嵌入式设备等来构建本机编译的应用程序,它使用dart作为编程语言,具有广泛的平台支持(Android、iOS、Windows、macOS、Linux、嵌入式等),还有热加载更新等其他功能等你挖掘!这里给大家分享一下我的学习路线:第1步:Flutter使用Dart语言,Dart使用的是OOP概念,要先对这方面有一个整体性认识。是个好的方法,可以帮助我们更容易地理解Flutter。步入正题,我们首先应该。原创 2022-11-29 21:48:48 · 1699 阅读 · 0 评论 -
Android OpenGLES3绘图 - 使用CameraX
相机处理是OpenGL一个重要的应用场景,因为OpenGL的主要工作是处理图像,而相机每秒生成几十帧图像,用GPU来处理再合适不过了。至于Android CameraX和OpenGL的结合使用,网上有不少教程了,然而它们都有一个特点,就是给两者增加了不必要的耦合。由于两者本身架构都设计得非常好,实际上它们只需要一点耦合:就是OpenGL给Camera提供一个Surface。如果分别实现了CameraX和OpenGL的Texture纹理图片,那么只需要改动极少的代码就能把两者结合起来。原创 2022-11-29 21:18:42 · 961 阅读 · 0 评论 -
Android软键盘高度控制的几种方案
要说获取软键盘的高度,那么肯定离不开getViewTreeObserver().addOnGlobalLayoutListener 的方式。只是使用起来又分不同的做法,最简单的是拿到Activity的ContentView,设置contentView.getViewTreeObserver() .addOnGlobalLayoutListener(onGlobalLayoutListener);然后在监听内部再通过 decorView.getWindowVisible转载 2022-11-26 21:47:13 · 3507 阅读 · 0 评论 -
Android View 绘制流程之DecorView与ViewRootImpl
可以看出,里面调用了mWindow的setContentView方法,那么这个"mWindow"是什么?再追踪,发现mWindow是Window类型的,但他是一个抽象类,setContentView也是抽象方法,所以我们要找到Window的实现类。发现在Activit的attach方法中原创 2022-11-24 17:03:10 · 521 阅读 · 0 评论 -
Android事件分发机制与核心用法
事件指的是屏幕触发事件——即Android中的TouchEvent/MotionEvent。每一次我们触摸屏幕,都会产生一连串的触摸事件,这些一连串的触摸事件合起来就是一个触摸事件序列。触摸事件在Android官方API中由类MotionEvent来描述,不同的触摸事件对应不同的事件类型。事件类型分别有ACTION_DOWN、ACTION_UP、ACTION_MOVE、ACTION_CANCEL。原创 2022-11-23 16:10:29 · 436 阅读 · 0 评论 -
Android程序员“越老越吃香”的背后,有这样一个先决条件
早在今年1024程序员节的时候,360的创始人周鸿祎就提到了“程序员越老越吃香”的话题。对于这个问题我们应该辩证来看待。对于一般的Android开发工作,年轻人有更多的时间和精力去学习,也有更多的发展可能性,不过对于更深入的技术架构等内容,有资深经验的程序员自然会做得更好,也就是上面所说的“越老越吃香”。目前国内大多数Android程序员还是倾向于去互联网公司,在这当中,。。原创 2022-11-22 17:51:04 · 459 阅读 · 0 评论 -
Android 之注解、APT技术
在编译期识别自定义的注解然后根据规则生成对应代码。生成代码其实是靠 Filer 这个类,但是代码里的方式不太灵活。可以使用 JavaPoet 库来帮助生成代码。● 创建一个 Java Module 名为 apt-test-annotation。● 创建一个 Java Module 名为 apt-test-processor。● 创建一个 Android Module 名为 apt-test-api。原创 2022-11-18 17:38:51 · 241 阅读 · 0 评论 -
Android插件化指南
插件化技术最初源于免安装运行 Apk的想法,这个免安装的 Apk 就可以理解为插件,而支持插件的 app 我们一般叫 宿主。在 Android 系统中,应用是以 Apk 的形式存在的,应用都需要安装才能使用。但实际上 Android 系统安装应用的方式相当简单,其实就是把应用 Apk 拷贝到系统不同的目录下、然后把 so 解压出来而已。常见的应用安装目录:/system/app:系统应用/system/priv-app:系统应用/data/app:用户应用。原创 2022-11-16 16:39:21 · 1405 阅读 · 0 评论 -
Android应用程序签名和Zipalign
Android应用程序可以使用各种编程语言和开发程序来创建。这些Android应用程序通过各种渠道发布,并安装在Android设备上。为了构建一个完整的Andrioid应用程序,需要一个签名过程来标识应用程序创建者。通常,开发程序会自动执行此操作,因此不需要额外的工作。但是,如果您将LIAPP等安全服务应用于应用程序,则应用程序包将更改,并且您必须手动对其进行签名。原创 2022-11-14 11:17:10 · 1056 阅读 · 0 评论 -
Android依赖导入全攻略
在我们开发安卓项目的时候,不会所有的功能都自己去造轮子,经常要使用到各种的其他包,其中有谷歌给我们提供的各种support包,也有各种第三方的功能库,有时候我们自己也会将一些功能封装成包。这些包存在和导入的形式也多种多样,有远程仓库的,有直接拷贝到本地的,jar包、aar包、so包等。所幸我们都可以在主工程和各个Module的里进行统一管理。本文将在Android Studio3.0环境下来汇总下这些用法。原创 2022-11-09 22:33:47 · 1861 阅读 · 0 评论 -
Android扫描多媒体文件剖析
这篇文章从系统源代码分析,讲述如何将程序创建的多媒体文件加入系统的媒体库,如何从媒体库删除,以及大多数程序开发者经常遇到的无法添加到媒体库的问题等。本人将通过对源代码的分析,一一解释这些问题。原创 2022-11-07 21:10:21 · 373 阅读 · 0 评论 -
InputManagerService: 创建与启动
IMS 的启动流程分为三步创建输入系统,建立上层与底层的映射关系。启动输入系统,其实就是启动底层输入系统的几个模块。输入系统就绪,上层会同步一些配置给底层输入系统。下面分三个模块,分别讲解这三步。原创 2022-11-06 23:27:58 · 199 阅读 · 0 评论 -
Android WorkManager定时任务
App有时可能需要定期运行某些工作。例如,可能要定期备份数据、上传信息到服务器,定期获取新的内容等等。在app运行期间,我们使用Handler也可以完成定期的功能。在这里我们介绍WorkManager使用定时任务的方法。前面我们介绍了WorkManager的使用方法,约束和延迟等。本文介绍WorkManager的定时任务。如何创建定时任务,查看任务状态,取消任务。本文使用kotlin注意:可以定义的最短重复间隔是 15 分钟(与 JobScheduler API 相同)。原创 2022-11-04 20:41:51 · 1258 阅读 · 1 评论 -
Android 应用换肤方案
实现方式是:用户提前自定义一些主题,然后当设置主题的时候将指定主题对应的 id 记录到本地文件中,当 Activity RESUME 的时候,判断 Activity 当前的主题是否和之前设置的主题一致,不一致的话就调用当前 Activity 的recreate()方法进行重建。这种引用方式的好处是只要切换了主题这些自定义属性可以动态发生变化。原创 2022-10-20 18:03:47 · 1536 阅读 · 0 评论 -
Android 虚拟机中的内存分配与 OOM
Android中每个App默认情况下是运行在一个独立进程中的, 而这个独立进程正是从Zygote孵化出来的VM进程, 也就是说, 也就是说每个Android APP在运行时会启动一个Java虚拟机,并且系统会给它分配固定的内存空间。原创 2022-10-19 21:15:02 · 1564 阅读 · 0 评论 -
Android中的启动屏幕
初始屏幕(也称为启动屏幕)在加载移动应用时提供简单的初始体验。它们为应用程序设置了舞台,同时为加载应用引擎和初始化应用留出了时间。例:当用户启动应用时,将发生以下事件:系统使用主题和您定义的任何动画显示初始屏幕。当应用准备就绪时,初始屏幕将关闭并显示应用。动画的元素由安卓清单中的 XML 资源文件定义。每种都有浅色和深色模式版本。默认情况下,初始屏幕使用主题的窗口背景(如果它是单一颜色)和启动器图标。初始屏幕的自定义是通过向应用主题添加属性来完成的。原创 2022-10-18 16:39:28 · 512 阅读 · 0 评论 -
用Dialog实现android 8种对话框
Android提供了丰富的Dialog函数,本文介绍常用的8种对话框的使用方法,包括普通、列表、单选、多选、等待、进度条、编辑、自定义等多种形式。有时,我们希望在对话框创建或关闭时完成一些特定的功能,这需要复写Dialog的create()、show()、dismiss()等方法。原创 2022-10-16 13:33:08 · 718 阅读 · 0 评论 -
安卓睡眠 API 教程
在本教程中,您将学习如何与 Android 睡眠 API 交互,并对系统发送的事件流做出反应。Android 睡眠 API 会收集周围的亮度和设备移动等信息,以对用户何时处于睡眠或清醒状态做出假设。此API可用于跟踪用户的睡眠模式,以帮助他们改善睡眠习惯。在构建简单的睡眠跟踪应用程序时,您将如何:为应用请求“活动识别”权限。注册睡眠接收器以过滤和分析设备检测到的不同事件。原创 2022-10-14 19:07:59 · 872 阅读 · 1 评论 -
Android中的Style和Theme
Style和Theme主要是用于对Android应用进行美化设计,优化交互页面,充分利用各种样式和主题资源,可以开发出各种风格的Android应用。原创 2022-10-13 21:08:44 · 113 阅读 · 0 评论 -
Android中的异步任务AsyncTask
AsyncTask,即异步任务,是Android给我们提供的一个处理异步任务的类.通过此类,可以实现UI线程和后台线程进行通讯,后台线程执行异步任务,并把结果返回给UI线程.原创 2022-10-11 18:33:58 · 510 阅读 · 0 评论 -
Android 亮度调节的方法
整体上看,Android亮度调节分为三个层次,分别是:Android系统亮度调节、Android App亮度调节和Android当前屏幕(Window)亮度调节。原创 2022-10-10 18:09:32 · 4733 阅读 · 1 评论 -
Android 自定义权限
有时候,我们可能遇到如下需求场景:当用户在一个应用程序中进行某项操作时,会启动另外一个应用程序,最常见的时直接打开了另外一个应用程序,并进入其中某个Activity(如:有的应用中有推荐应用列表,当用户点击时程序会首先判断其他应用有无安装,若无则提示用户下载,如有则直接打开进入)。有时候,处于安全等需要,此类操作需要加上受限制性的访问限制,那么怎么办呢?Android中为我们提供了自定义权限。为了讲清自定义权限,先以不同的程序之间访问Activity增加权限限制为例。原创 2022-10-09 21:33:37 · 1005 阅读 · 0 评论 -
Android类加载流程
mirror命名空间下的类是底层对Java层类的映射,比如:mirror::Class类就是对java.lang.Class类的映射,SetAccessFlags就是对Class类的accessFlags字段赋值。LoadMethod函数主要做设置ArtMethod结构的一些属性,比如函数的MethodIdx,CodeItem在dex文件中的偏移,函数的AccessFlag等。遍历所有dexElements,并调用Element类的findClass。SetupClass设置类的一些基本字段信息。原创 2022-10-07 23:53:49 · 626 阅读 · 0 评论 -
从微博个性图标里学Android动态更换
微博个性图标运用的就是动态更换桌面图标的技术,我们可以直接使用PackageManager就可以实现动态更换桌面图标。原创 2022-10-06 23:47:03 · 256 阅读 · 0 评论 -
使用 Mavin Publish Gradle 插件将 Android 库发布到 Azure Artifacts
在本文中,我们介绍了如何配置现有的 android 库以使用Mavin Publish Gradle 插件将 android 库发布到Azure Artifacts,然后在另一个 android 应用程序中使用已发布的库。原创 2022-09-27 16:22:43 · 1064 阅读 · 0 评论 -
Android Image Loading 库如何解决加载缓慢的问题?
加载缓慢的主要原因之一是,即使视图不在窗口或不再需要该任务,我们也不会取消下载或解码位图之类的任务,因此甚至有许多任务正在完成虽然我们不需要它们,所以加载刚刚出现在窗口中的实际图像需要时间。这就是他们通过在适当的时间取消不再需要的任务来解决图像加载缓慢问题的方法。在这篇博客中,我们将学习 Android Image Loading 库如何解决图像加载缓慢的问题。这些库在内部为我们做了很多事情,这样我们就可以使用它们并轻松完成我们的任务。我们将在即将发布的博文中了解这些库所做的更多事情。原创 2022-09-22 09:37:28 · 394 阅读 · 0 评论 -
什么是dart ?
Dart 是一种通用的面向对象的编程语言。从语法上讲,它与 java 和 c# 非常相似。以及为什么大家都想学,因为 Dart 是 Flutter 的官方语言。Dart 可用于移动、Web、桌面和服务器端应用程序。如果你有一个flutter项目,同样的项目可以在web、桌面、android、iOS上执行。面向对象Dart 是一种完全面向对象的编程语言。它支持类、对象、接口、继承、多态、封装等所有特性…多平台部署Dart 项目可以在各种平台上运行,例如 web、桌面、android 和 ios。原创 2022-09-15 14:06:06 · 1048 阅读 · 0 评论 -
在android中实现RecyclerView并显示动态数据?
首先RecyclerView是为了填补ListView. 当涉及到一长串列表时,创建视图是昂贵的,它确实变得昂贵。假设一个带有食物列表的食品订购应用程序,可能有 100 或数千种食物,在您的移动屏幕上您只看到 10 种(假设大小限制)。Adapter 是 View 和 Data 之间的桥梁,它基本上接受布局和数据,然后将两者绑定并显示在 RecyclerView 上。布局是一样的,只是改变了数据!开发人员不用担心,当您向下滚动时,上部视图会被回收以用作新的底部视图,并且数据已更改,仅此而已。原创 2022-09-05 10:03:32 · 2229 阅读 · 0 评论 -
在Android中使用 apksigner 和 APK 签名方案 v2
Android 7.0 中引入了 APK 签名方案 v2,以更加重要地保护 apk 文件。之后,在 Android 9.0 中引入了 APK Signature Scheme v3,在 Android 11.0 中引入了 APK Signature Scheme v4。在 APK Signature Scheme v2 之前,签名是基于 Signed JAR 使用 jarsigner,从 v2 开始开始基于 apksigner。那么,在哪些情况下我们使用 apksigner 进行签名呢?...原创 2022-09-01 13:38:20 · 1607 阅读 · 0 评论 -
Java 走到了尽头吗?
}不要与 JavaScript 或 Javanese 语言混淆。Java 是一种编程语言和平台,由加拿大计算机科学家James Gosling于 1995 年在Sun Microsystems创建。Java 是一种高级的、基于类的、面向对象的编程语言。它是一种通用编程语言,旨在程序员编写一次,随处运行,因此遵循WORA原则,这意味着一旦编译的 java 代码可以在其他平台上运行而无需重新编译。因此 Java 是平台独立语言,因为它使用虚拟机来执行其字节码为什么我说 Java 也是一个平台?...原创 2022-08-30 13:59:18 · 385 阅读 · 0 评论 -
Kotlin 中的 StateFlow API
StateFlow 就像是使用 Kotlin Flow 来管理和表示应用程序中的状态的一种方式。StateFlow 是一种接口类型,它只是一个只读的并且总是返回更新后的值。为了接收更新的值,我们只需从实现的 Flow 中收集值。StateFlow 仅在值已更新且不返回相同值时返回。简单来说,考虑两个值x和y,其中x是最初发出的值,y是要发出的值。StateFlow 确保,如果(x == y)什么都不做,但 if (x!=y)then 只发出新值,即在这种情况下是y。...原创 2022-08-27 09:34:47 · 441 阅读 · 0 评论