![](https://img-blog.csdnimg.cn/77cc5091ed894edba67c63b750d0f683.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android 进阶
文章平均质量分 76
解锁Android进阶奥秘,提升你的移动开发技能!掌握高级技巧,打造卓越应用,实现技术飞跃!立即加入,成为Android开发高手!
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
@ZhangJun
Android开发领域拥有十余年经验的资深开发者,专注于Android系统层和应用层的开发,并在电视(TV/STB)和物联网(IoT)领域积累了丰富的行业经验。
展开
-
并口、串口和GPIO口区别
另外,为了使用的方便,很多mcu把glue logic等集成到芯片内部,增强了系统的稳定性能,比如GPIO接口除去两个标准寄存器必须具备外,还提供上拉寄存器,可以设置IO的输出模式是高阻,还是带上拉的电平输出,或者不带上拉的电平输出。另外需要注意的是,对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错,目前,并行接口主要作为打印机端口等。原创 2024-07-06 18:10:12 · 666 阅读 · 0 评论 -
Kotlin协程使用详解
协程的挂起可以理解为协程中的代码离开协程所在线程的过程,协程的恢复可以理解为协程中的代码重新进入协程所在线程的过程。而恢复这个功能是协程的,如果你不在协程里面调用,恢复这个功能没法实现,所以也就回答了这个问题:为什么挂起函数必须在协程或者另一个挂起函数里被调用。因为一个挂起函数要么在协程里被调用,要么在另一个挂起函数里被调用,所以不管是直接还是间接地,总是会在一个协程里被调用的。协程范围,指的是协程内的代码运行的时间周期范围,如果超出了指定的协程范围,协程会被取消执行。都不对,我们挂起的对象是协程。原创 2024-07-06 17:41:00 · 736 阅读 · 0 评论 -
Android内存碎片化调优
在Android系统中,内存碎片化是指内存中存在很多小块的空闲内存,这些内存块之间不连续,难以找到足够大的连续内存块来满足某些大型对象的内存分配需求。通过优化内存使用、采用合适的内存管理策略以及定期清理内存,可以有效地减少内存碎片化并提升系统的性能和稳定性。在实际应用中,你可能需要在关键的内存分配操作前调用内存压缩,例如在Bitmap的分配和回收过程中,以保持内存的连续性。另一种是空闲分散的内存页,凑不齐一个组物理地址连续的空闲内存页,就没办法分配了,这些散落的内存页被称为。原创 2024-05-26 16:06:52 · 97 阅读 · 0 评论 -
Jetpack Compose 初探
是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的Kotlin API,可以帮助您简化并加快 Android 界面开发。与传统的XML布局文件和Java代码相比,采用了声明式的方式来构建用户界面,提供了一种更简洁、更直观的UI开发体验。围绕可组合函数构建,这些函数允许开发者以程序化方式定义应用的界面,只需描述应用界面的外观并提供数据依赖项,而不必关注界面的构建过程。原创 2024-05-15 18:48:18 · 129 阅读 · 0 评论 -
重新认识Flutter跨平台技术(下)
首先 Skia 肯定是一个优秀的通用 2D 图形库,例如 Google Chrome 、Android、Firefox 等设备都是用了 Skia ,但是也因为它的「通用性」,所以它不属于 Flutter 的形状,它无法专门针对 Flutter 的要求去进行优化调整,例如 Skia 附带的许多功能超出了 Flutter 的要求,其中一些可能会导致不必要的开销并导致渲染时间变慢,而目前来看,Skia 的通用性给 Flutter 带来了性能瓶颈。然后,框架会将可渲染的对象缝合在一起,组成可渲染对象树。原创 2024-05-12 18:59:33 · 196 阅读 · 0 评论 -
深度解析Android 14新特性
Android 14是谷歌公司于2023年5月11日正式发布的一款操作系统。这款新系统无论从ROM角度还是应用程序(App)角度,都带来了多方面的提升和改进。原创 2024-05-09 20:04:27 · 452 阅读 · 1 评论 -
重新认识Kotlin语言特性
Kotlin 是一种静态类型的开源编程语言,它既支持面向对象的编程,又支持函数式编程。Kotlin 提供的语法和概念与其他语言(包括 C#、Java 和 Scala 等等)类似。Kotlin 的目标并不是独树一帜,而是从几十年的语言发展中汲取灵感。它以变体的形式存在,这些变体以 JVM (Kotlin/JVM)、JavaScript (Kotlin/JS) 和原生代码 (Kotlin/Native) 为目标。原创 2024-05-07 13:38:43 · 158 阅读 · 0 评论 -
Android面试-Java基础
1. 九种基本数据类型的大小,以及他们的封装类。java中有八种基本数据类型,int,double,long,float,short,byte,character,boolean,void;他们对应的封装类型是:Integer ,Double ,Long ,Float, Short,Byte,Character,Boolean,Void;2. Switch能否用string做参数?...原创 2016-10-17 00:02:55 · 1088 阅读 · 1 评论 -
Android面试-JVM
分为栈,堆,方法区,方法区中存放.class文件的内容和静态成员以及类型数据,栈存放引用,堆存放实例化的对象。堆内存中的这些分区在Java的垃圾回收机制中扮演着重要的角色。* Eden区是Java堆内存中的年轻代(Young Generation)的一部分,用于新对象的分配。* 当程序创建新对象时,这些对象首先会被分配到Eden区。* Eden区的大小是固定的,当Eden区满时,会触发一次Minor GC(年轻代垃圾回收),以清理不再使用的对象,并尝试将存活的对象移动到Survivor区。原创 2016-10-17 10:17:05 · 963 阅读 · 1 评论 -
Android面试-网络知识
OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)数据链路:PPP、FR、HDLC、VLA...原创 2017-06-01 20:42:27 · 2900 阅读 · 1 评论 -
Android面试-数据结构与算法
链表与数组数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组元素在栈区,链表元素在堆区;数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。堆、栈、队列① 堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。② 栈就是一个桶...原创 2017-06-02 12:32:41 · 5316 阅读 · 0 评论 -
Android面试--高级知识
在Android开发中,自定义View的机型适配是一个重要的问题,因为不同的设备和屏幕尺寸可能会对View的显示和布局产生不同的影响。以下是一些建议和策略,帮助你在创建自定义View时考虑机型适配:使用dp单位而非px使用dp(密度无关像素)作为自定义View的尺寸单位,而不是px。dp单位会根据设备的屏幕密度进行自动转换,确保在不同设备上显示的一致性。考虑屏幕尺寸和密度在自定义View的构造函数或布局文件中,可以通过获取屏幕的密度和尺寸信息,并据此调整View的属性。支持不同屏幕方向。原创 2017-06-02 15:12:58 · 2402 阅读 · 0 评论 -
Android 9适配经验总结
但对于需要应用正常启动后才能对广播进行正确处理的场景,则应用使用动态注册的方式,这时如果采用静态注册的方式,在应用没有启动时,收到广播可能不会得到正确的处理,同时都采用静态注册的方式也会影响广播传递的效率,因为很多未启动的应用也会被广播唤醒。采用代码中动态注册广播的方式不仅是 Android9 系统的要求,也是一种比较好的开发习惯,这有利于对广播的使用进行控制,在应用功能已经初始化完成的时候添加广播的监听,确保广播到来时的功能执行能正常进行。最好的适配方式是修改所有的网络接口,改为 https 协议;原创 2023-03-03 20:24:11 · 913 阅读 · 0 评论 -
车载开发-Android Automotive平台
Android Automotive是一个基于Android操作系统的开源平台,专为车载信息娱乐系统设计。它利用了Android的通用框架、语言和API,以提供一个全栈、高度可定制的平台。Android Automotive不是Android的分支或并行开发,而是Android生态系统的一部分,与手机、平板电脑等安卓设备上的Android共享相同的代码库和存储库。该平台为车载信息娱乐系统和车机提供了开放性、自定义和规模化特性。原创 2024-05-04 13:48:34 · 118 阅读 · 1 评论 -
车载开发-操作系统介绍
车载操作系统(Automotive Operating System,简称车载OS)是管理和控制车载软件、硬件资源的程序系统,它支持汽车的上层软件开发、数据连接和人机界面(HMI)。车载操作系统与车控操作系统同属于汽车操作系统,但并不直接管理车辆动力、底盘、车身等基础硬件。管理车载系统的数据资源、硬软件,并控制应用程序的运行。提供多形式的人机界面,支持上层软件的运行。原创 2024-05-03 11:40:10 · 83 阅读 · 0 评论 -
Android面试-Java高级
每个处理器通过嗅探在总线上传播的数据来检测自己缓存的信息是不是过期了,当处理器发现自己缓存行对应的内存地址被修改了,就会将当前处理器的缓存行设置为无效状态,当处理器要对这个数据进行修改操作的时候,会强制重新从系统内存里把数据读到处理器缓存里。Java的异常体系是Java编程语言中的一个重要组成部分,用于处理程序运行时可能出现的各种异常情况。但是就算回写内存,如果其他处理器缓存的值还是旧的,在执行计算操作就会有问题,所以在多处理器下,为了保证各个处理器的缓存是一致的,就会实现缓存一致性协议。原创 2017-06-03 12:00:05 · 659 阅读 · 1 评论 -
Android TV框架TIF详解
Android TIF(Android TV input Framework)是Google向电视制造商提供了一套标准的API,用于创建Input模块来控制Android电视。这套API的底层实现的原理是aidl和provider,从而进行了跨进程通信。系统或第三方的应用可以通过TIF获得所有输入(input)的信源(输入的模块包括:搜台模块,MDMI模块,网络模块等),然后通过aidl切台输出到......原创 2019-10-26 10:27:02 · 3173 阅读 · 2 评论 -
机顶盒知识详解
机顶盒知识详解数字视频变换盒(英语:Set Top Box,简称STB),通常称作机顶盒或机上盒,是一个连接电视机与外部信号源的设备;它可以将压缩的数字信号转成电视内容,并在电视机上显示出来;信号可以来自有线电缆、卫星天线、宽带网络以及地面广播。机顶盒接收的内容除了模拟电视可以提供的图像、声音之外,更在于能够接收数据内容,包括电子节目指南、因特网网页、字幕等等;使用户能在现有电视机上观...原创 2016-10-24 00:32:25 · 17106 阅读 · 1 评论 -
Android TV 将Excel表格解析成json文件
Android TV开发,设置模块一般是一个菜单树,也即多级联动菜单,我们可以做成配置项文件,这样做的好处是,不需要根据每个客户需求去控制菜单列表里的菜单项显示隐藏,减少项目维护成本。那么这个配置项怎么去设计比较好呢?因为需求是产品控制的,我们希望配置项文件由产品来编写和维护,对于产品来说,我们让他去编写json配置文件或者xml文件,有点为难人,术业有专攻,他们更喜欢可视化操作,简单、直观,于是我...原创 2017-08-19 18:33:47 · 2723 阅读 · 1 评论 -
Android TV遥控器按键适配
TV 按键适配原创 2018-04-06 20:47:17 · 473 阅读 · 1 评论 -
Android打印机--TSC 标签打印
Android TSC标签打印指的是在Android设备上使用TSC(Thermal Scripting Code)标签打印机进行打印操作。TSC标签打印机通常用于打印各种标签,如条形码、二维码、文字、图片等,广泛应用于物流、仓储、零售、医疗等领域。原创 2017-05-15 12:15:51 · 14280 阅读 · 19 评论 -
Android打印机--没有设备驱动sdk,自己实现USB打印功能
Android下的设备调试,如果设备提供了驱动,按照厂家的驱动调试即可;设备未提供驱动,只能按照通用的方法进行调试。对于智能POS、收银机以及其他打印设备,如果厂商不提供打印相关sdk,那么打印功能怎么实现呢?其实我们可以基于USB通信机制,自己去实现打印驱动。整个实现流程如下初始化打印机:首先要获取USB管理器;其次要注册监听USB设备插拔变化和请求权限的广播;最后列出所有的USB设备,并且都请......原创 2017-05-10 19:44:45 · 19716 阅读 · 24 评论 -
Android打印机--小票打印格式及模板设置
小票打印就是向打印设备发送控制打印格式的指令集,而这些打印格式一般需要去查询对应打印机的API文档。原创 2017-04-07 16:00:10 · 21939 阅读 · 8 评论 -
Android打印机--蓝牙打印
关于Android蓝牙打印和网络打印,其实都是基于Socket通信机制实现的。但这两者在使用方式和实现细节上有所不同。原创 2017-04-06 15:56:15 · 5398 阅读 · 5 评论 -
解析Linux内核
Linux 内核剖析Linux 内核简介Linux 内核的属性Linux 内核的主要子系统系统调用接口进程管理内存管理虚拟文件系统网络堆栈设备驱动程序依赖体系结构的代码Linux 内核的一些有用特性Linux 内核简介我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。图 2. GNU/Linux 操作系统的基本体系结构...原创 2018-10-04 23:39:37 · 399 阅读 · 0 评论 -
Android am和pm命令
am发送广播am broadcast后面的参数有[-a <ACTION>][-d <DATA_URI>][-t <MIME_TYPE>][-c <CATEGORY> [-c <CATEGORY>] ...][-e|--es <EXTRA_KEY&原创 2019-02-18 20:27:41 · 1348 阅读 · 0 评论 -
嵌入式Linux启动流程
第一步:加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。第二步:读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot ......原创 2018-10-06 00:31:43 · 3641 阅读 · 0 评论 -
Linux 格式化U盘为ext4格式以及修复分区表方法
Linux 格式化U盘为ext4格式以及修复分区表方法原创 2015-11-25 18:43:11 · 14795 阅读 · 1 评论 -
一些常用的Linux命令
Linux创建软链接ln -s 源文件 目标文件ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化不加参数s是硬链接,它会在你选定的位置上生成一个和源文件大小相同的文件查看系统信息adb shell cat /system/build.prop查看包信息dumpsys package -m [packagename]开屏echo me...原创 2019-02-18 19:34:58 · 563 阅读 · 0 评论 -
详细讲解Linux驱动程序
一 编写Linux驱动程序1.建立Linux驱动骨架Linux内核在使用驱动时需要装载与卸载驱动装载驱动:建立设备文件、分配内存地址空间等;module_init 函数处理驱动初始化卸载驱动:删除设备文件、释放内存地址空间等;module_exit函数处理退出包含这两个函数的两个宏的C程序文件也可看做是Linux驱动的骨架2.注册和注销设备文件任何一个Linux驱动都需...原创 2018-10-10 08:50:28 · 962 阅读 · 0 评论 -
Linux-Android开发常用命令
1、安装bin文件:sudo chmod u+x *.binsudo ./*.bin2、过滤打印log信息:adb logcat -s TAG:E3、串口工具minicom使用:安装:sudo apt-get install minicom第一次启动时:输入minicom -s出现配置菜单:选serial port setup进入串口配置输入A配置串口驱动为/de......原创 2015-10-25 21:05:51 · 1763 阅读 · 1 评论 -
Flutter框架简述
概念Flutter是一个移动应用程序的软件开发工具包(SDK),具有以下特征:跨平台应用的框架, 没有使用WebView或者系统平台自带的控件,使用自身的高性能渲染引擎自绘简化版的浏览器,最大限度在android和ios上统一UI,包括业务逻辑和用户体验开发语言使用dart,结合C, C++, 和Skia(2D渲染引擎)构建支持hot reload,包含着完整的控件和工具链一切皆控件,控件...原创 2018-01-05 18:45:56 · 15678 阅读 · 0 评论 -
flutter tv开发之按键消息分发机制(下)
上一篇flutter tv开发之按键消息分发机制(上)说到,flutter基本控件自身是不支持按键操作的,我们需要找到一个支持按键交互的控件来装饰我们的基本组件,那就是RawKeyboardListener绘制的控件只有被这个控件包裹,控件才支持按键事件。实例化该对象时,有3个参数是必须要传的:focusNode控制该控件是否有焦点,要使控件获取焦点,可以这样写:FocusS.........原创 2018-03-06 19:28:27 · 4007 阅读 · 5 评论 -
Windows下配置Flutter开发环境
安装Git你需要安装Git作为Flutter SDK的下载工具。安装教程:http://blog.csdn.net/johnwcheung/article/details/53090728下载Flutter SDKWindows桌面右键点击git base here(当然你也可以选择一个文件夹打开git命令行窗口),输入以下命令下载Flutter SDK:git clone......原创 2018-03-10 11:38:36 · 6190 阅读 · 0 评论 -
Flutter控件之Text Widgets
负责显示文本和定义显示样式的控件。Text显示单一样式的文本new Text( 'Hello, $_name! How are you?', textAlign: TextAlign.center, overflow: TextOverflow.ellipsis, style: new TextStyle(fontWeight: FontWeight.bold),)如果想让文本控件响应T...原创 2018-01-08 19:55:52 · 3982 阅读 · 1 评论 -
Flutter、Weex、React Native和Android原生对比报告
跨平台技术介绍原创 2018-09-27 19:50:54 · 10168 阅读 · 0 评论 -
Flutter实战(一)---闪屏(启动)页面的实现
很多app启动之后都会出现一个splash启动界面,显示广告信息或产品的LOGO、公司的LOGO或者开发者信息。如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。那么,我们使用Flutter开发应用该怎么实现闪屏页面呢?有两种方案可以实现:第一种,平台无关,在dart main函数里将启动页面作为第一个显示页面,设置一个定时器,定时显示多少秒后跳转到......原创 2019-02-26 12:42:38 · 6976 阅读 · 0 评论 -
Flutter 性能调优
Flutter 性能调优Flutter 垃圾回收机制ListView 内存初探ListView内存降低方法汇总固定数据个数,数据驱动UI树中的Widget都采用StatelessWidgetFlutter的三种构建模式(build modes)DebugReleaseProfile调试工具Observatory详细介绍Observatory界面右侧列出的相关功能介绍Dart DevTools介绍F......原创 2019-09-29 14:54:22 · 5452 阅读 · 1 评论 -
Flutter实战(六)---网络请求
这里建议使用第三方库dio,它是一个强大易用的dart http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载等。使用方法添加库依赖dependencies: dio: 2.1.x #latest version二次封装/* * 网络请求封装 * Created by ZhangJun on 2018-11-2......原创 2019-07-06 17:14:50 · 624 阅读 · 0 评论 -
Flutter实战(二)---多语言跨平台
前言去年12月份,Flutter1.0正式版发布,标志着Flutter已经达到可以投入商用项目的状态,我们可以看到Google的野心,不止步于移动端,已经向桌面端(Flutter Desktop Embedding)和Web端(Hummingbird)逐步拓展,大有一统天下之趋势。时隔三月,在2019 MWC 世界移动通信大会上,Flutter1.2发布,除了UI组件更新、动画优化和Dart语......原创 2019-04-10 09:10:00 · 1021 阅读 · 0 评论