自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(306)
  • 收藏
  • 关注

原创 5月《Android音视频进阶指南》限时开放领取!

不少人在音视频初级入门过程中只是接触Android多媒体展示相关的API,通过单独的列举和使用这些API,只能让你对Android音视频处理有一个基本的轮廓,知识点都是零散的,根本没有有效的途径将所有知识点串联起来。这样对于音视频的了解和控制就仅仅局限于最外层的API了,在深入学习之前,往往这些API就已经把脑袋都弄大了,而且,仅仅停留在使用API的层次,不能让你适应不断变化的需求。首先给大家分享一份高级音视频学习思维导图,希望这份思维导图能够给大家学习音视频开发提供一个好的方向。

2024-05-21 15:54:50 559

原创 kotlin开发之协程挂起与恢复实现

在Kotlin协程中,挂起函数允许你以同步的方式编写异步代码,而协程框架会自动处理挂起函数的挂起和恢复。通过使用协程构建器,如launch或async,你可以创建和管理协程。错误处理也可以通过传统的try-catch块来实现。

2024-05-21 11:41:39 694

原创 这份《Android Framework源码开发揭秘》送给5月份还没找到工作的朋友

2024年的金三银四已经过去了,朋友们找工作都顺利吗?我相信肯定还有跟小编一样的“咸鱼”吧。可能都没掌握熟练吧。。。———这是面试官的口头禅。在这里小编偷偷告诉大家,虽然5月了,但工作机会一直都是留给有心人的,最后再冲一波Framework,还是有希望的!

2024-05-16 20:48:44 740

原创 Android Framework加堆栈打印追踪信息

在实际开发中,我们可能会遇到需要在Java应用程序中调用Native方法的情况,为了更好地跟踪代码执行路径,我们可以同时打印Java和Native的堆栈信息。我们希望在出现异常时能够获取到完整的Java和Native堆栈信息,以便更好地定位问题。Android.mk: LOCAL_SHARED_LIBRARIES里包含libutilscallstack Android.bp: shared_libs里包含libutilscallstackAndroid.mk: LOCAL_SHARED_LIBRARIES里

2024-05-16 14:55:30 919

原创 包含了腾讯、百度、字节等大厂的Android性能优化实战教程

等大厂的性能优化实战,既能够夯实底层原理、性能调优等核心技术点,又能够掌握普通开发者,难以触及的架构设计方法论。让你在工作中、团队里、面试时,拥有同行难以复制的核心竞争力。那么在针对性能优化这个点,特意给大家准备了这份《

2024-05-11 15:15:10 552

原创 详细说一说Vue3中的component组件

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

2024-05-11 14:22:46 813

原创 如何在Android上渲染VR场景——GvrView

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

2024-05-07 14:47:03 616

原创 【字节、小米、阿里】Android开发真实面试经历

面试官还提到了一个实际项目中如何处理。

2024-05-07 14:21:05 984

原创 Android中在activity销毁后将数据传递给上一个活动

上面代码在 SecondActivity 中是通过点击 Button 手动调用 finish() 方法来销毁当前的 Activity,如果是点击返回按钮的话则需要通过重写 onBackPressed 方法来实现数据的传递,所以在 SecondActivity 中重写 onBackPressed 方法,代码如下所示。现在android项目使用的 android studio 来进行开发,开发的语言现在推荐的是 kotlin, 不过这里还是先使用 Java 来开发。activity_main.xml 文件。

2024-05-05 10:40:09 220

原创 Android中的碎片

在讲解碎片之前需要先了解布局和控件,下面是一个布局文件的内容--android:id="@+id/button_1" 表示给该控件添加了一个idlayout_width=match_parent 表示该button控件的宽度和父组件一致layout_height=wrap_content 表示该button控件的高度是按照实际内容来的android:text="ButtonOne" 是button中显示的内容-->

2024-05-05 10:37:38 601

原创 2024金三银四Android framework 面试题汇总【附答案】

金三银四已经过完了,面试也该告一段落了。看见大家集体困扰Android framework,吐槽面试官总是问Android framework相关的面试题。大家都是一脸茫然。

2024-05-05 10:35:08 1259

原创 Android原生WebView与JSP交互

我们也经常做平板和大屏项目的时候常常会遇到要开发网站壳子,一般网站前端用的Nodejs之类的框架来交互的,但是与JSP交互的少之又少,他们一般不会前端开发更加重视后端内容,导致一些交互他们无法实现,这时候我就来分享了我对于这块的解决方案了。

2024-05-02 13:30:00 268

原创 2024版Flutter全网最新最全学习路线【Android程序员必备】

Flutter在跨平台开发领域具有重要的地位,它以其高效、灵活和一致性的特性赢得了开发者的广泛认可。随着技术的不断发展,Flutter有望在未来继续发挥其重要作用,为移动应用开发带来更多的可能性。总的来说就是现阶段Flutter是跨平台最好的选择。

2024-05-02 11:00:00 772

原创 Android Android.mk入门

编码类型和关键字1、apk文件,BUILD_PREBUILT2、app代码,BUILD_PACKAGE3、动态库,BUILD_SHARED_LIBRARY4、静态库,BUILD_STATIC_LIBRARY5、代码编译成Jar包,BUILD_JAVA_LIBRARY6、jar包编译到系统,BUILD_MULTI_PREBUILT​常用的编译类型基本就上面这些。

2024-04-29 14:33:18 499

原创 Android最佳学习路线【程序员必读】

从入门到精通,是程序员的必经之路,作为Android程序员,持续学习是必不可少的,为了方便大家学习,我整理了很多Android程序员学习路线的相关资料,有需要的朋友可以扫描下方二维码,免费获取!

2024-04-29 14:30:43 642

原创 OKHttp源码解读

请求由单行指令构成,只支持GET方法,服务器只能回应HTML格式的字符串,不能回应别的格式,当服务器发送完毕,就关闭TCP连接。

2024-04-26 10:07:22 853

原创 Android程序员们如何评价Flutter?

它允许开发者使用单一的代码库高效地创建跨平台的应用程序,这些应用程序不仅限于移动平台(如 iOS 和 Android),还覆盖了 Web、桌面(包括 Windows、macOS 和 Linux)以及嵌入式设备。可以肯定的是,flutter目前依旧有很好的发展前景,随着移动互联网的快速发展和人们对移动应用需求的不断增加,flutter的这种跨平台特性将会持续。不同的用户可能使用不同的操作系统,例如Windows、Linux、macOS等。硬件平台指的是不同的计算机架构,如x86、ARM等。

2024-04-26 10:05:26 1028

原创 Flutter 学习 之 DIO4.0 的封装

dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等…网址在右边 → [dio]

2024-04-24 10:55:47 337

原创 Flutter开发 -- 条件绘制

*** 这个方式在Flutter里也会经常用到。不管是高情商代码抽象,还是低情商减少缩进。以上大部分都可以用在child属性下。但是在Row,Column这样的children属性不一定适用。现在看看对children怎么实现条件绘制:其实也是用了if表达式,或者类似于三元操作符。只是这里多了一个对Widget列表的操作。就是那个spread operator。让widget列表spread在children里。如果你看到了这里,觉得文章写得不错就给个赞呗?

2024-04-24 10:52:38 257

原创 Android程序员工作难找,真的都是因为经济原因和人工智能吗?

事实证明,物以稀为贵。人才也是,越缺少的人才越受到市场的欢迎。所以我们要做的就是不断的学习,保持我们自身所存在的优势,保持自身的独特竞争力。在这里,给大家提供一份我自己整理的Android程序员进阶资料,希望自己在保持学习状态的同时也在不断的进步!有需要的朋友可以扫描下方二维码,免费获取更多相关资料!无论您是刚刚开始学习Android开发,还是已经有一定经验的开发者,亦或是想要进阶和突破20~30K薪资范畴。学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

2024-04-24 10:47:21 968

原创 MediaStore使用实战:实现“0权限”操作下载目录等

在以前,操作外部存储通常的做法是申请存储权限,然后通过文件路径取得File(path),进行相关操作。随着谷歌对相关权限的收紧,[Android 10引入分区存储],加上国内要求targetAPI必须提升到30+,存储操作需要做新的适配。由于谷歌提供的文档较为简略,所以以操作Download目录为例撰写这篇文章。图片(包括照片和屏幕截图),存储在 DCIM/ 和 Pictures/ 目录中。系统将这些文件添加到表格中。视频,存储在 DCIM/、Movies/ 和 Pictures/ 目录中。

2024-04-22 11:19:54 877

原创 如何从Android应用深入到Framework?

很多公司的应用开发需要基于模块化、层次化、组件化、控件化来设计架构,它的基础就是建立在Android Framework框架的底层原理之上,学习Framework可以深层次的去解决安卓应用开发时遇到的一些难题,甚至不少公司都有设置专门的Android Framework开发岗位。有的公司的面试可能大部分都是关于Framewoke方面的,尤其是Android Framework中各个组件的原理。第一,不管你去面试哪家公司,Framework是必问项,而Framework使用范围广,无论如何是避不开的;

2024-04-22 11:17:25 766

原创 【Android】 底部导航开发,只需要六步

我们创建三个,所以需要三个对应的页面 在layout中新建xml文件按照这种方式再新建两个文件,分别为。

2024-04-18 15:03:02 149

原创 Android WiFi工具类

这个工具类还提供了一些辅助方法,比如获取当前连接的WiFi信息、检查是否有当前可用的WiFi连接、添加WiFi配置到系统、创建WiFi配置、获取是否已经存在的配置、移除同名WiFi、判断扫描结果中是否包含了特定名称的WiFi等。通过使用这个工具类,开发人员可以更专注于应用的核心功能,而无需过多关注底层的WiFi管理细节。这个工具类提供了一系列方法,可以方便地执行诸如检查WiFi状态、打开或关闭WiFi、扫描可用的WiFi网络、连接到指定的WiFi网络、断开当前连接的WiFi网络等操作。

2024-04-18 14:59:02 220

原创 周鸿祎:Android程序员越老越吃香!

在这里为大家准备一份Android进阶学习资料,方便大家系统的学习Android知识。有需要的朋友可以扫描下方二维码,免费获取更多相关资料。无论您是刚刚开始学习Android开发,还是已经有一定经验的开发者,亦或是想要进阶和突破20~30K薪资范畴。学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈如果你没有方向,这里分享一份涵盖了从基本的Android开发到高级知识内容的《Android八大模块进阶笔记。

2024-04-18 14:31:13 1086

原创 Android jni 方法 hook 的实现方案

本文主要是简述一下 jni 方法的调用流程,然后讨论下对jni 方法hook的实现方案。JNI 即 Java Native Interface,作为Java代码和native代码之间的中间层,方便Java代码调用native api以及native 代码调用Java api。以 Android 上Java 代码启动线程为例,调用方法时,会调到进而调用到他的 native peer,最后创建相应的 pthread。

2024-04-16 14:55:24 723

原创 想学Android开发,是否必须精通Java?

想学Android开发,必然需要先精通Java,其次c++,再后面是kotlin,基本代码上系统源码framework层面都是java和c++,基本上找不到任何kotlin,源码中只有几个简单app使用是kotlin。在这里,我为大家整理了一些列Android学习资料,有需要的朋友可以扫描下方二维码,获取更多相关资料。

2024-04-16 14:52:23 705

原创 攻防世界 XCTF 【Mobile】APK逆向

顺便吐槽一下 java 是真的难用,复制过来一段代码,想要运行还要改改改,不像 python …调用 checkSN 方法,去判断一下 edit_userName 和 edit_sn 关系。其实很简单,就是把 userName 给 md5 一下而已,简单调试一下就行了。正常 JADX 反编译,后丢到 IDEA 中审计一下。看一下 onCreate 方法,其实关键的也就一句。直接看 MainActivity。

2024-04-14 14:13:34 98

原创 【Android面经】准备参加字节跳动的面试,有哪些面经可以分享?

简历相当于门面,意味着在筛选简历的时候能否收到面试邀约。简历的好坏,至少影响这次面试结果的30%。简历的注意事项也有蛮多。一定要主要自己有些什么成果及项目经历要及时的更新到自己的简历里面。简历的书写需要符合逻辑性,最好按结构化思维、金字塔原理、STAR原理等进行简历的结构编排。也需要注意好细节,简历里面不要出现错别字。对自己的项目经历要简短清晰的描述,能够数据化呈现就更好。模棱两可往往会让人觉得不自信不靠谱。

2024-04-14 14:11:22 637

原创 Compose 中的附带效应

附带效应是指发生在可组合函数作用域之外的应用状态的变化。由于可组合项的生命周期和特性(例如可组合函数可以按任何顺序执行、可组合函数可以并行运行、重组会跳过尽可能多的内容),可组合项在理想情况下应该是无附带效应的。不过,有时附带效应是必要的,例如,触发一次性事件(例如显示信息提示控件),或在满足特定状态条件时进入另一个屏幕。这些操作应从能感知可组合项生命周期的受控环境中调用。这就需要使用Jetpack Compose 提供的不同附带效应 API。

2024-04-11 14:16:07 656

原创 【Android面经】大厂Android面经分享之阿里巴巴

介绍自己的项目经验和个人的擅长点,面试官主要考察你的表达能力和语言精简能力。1、HashMap 1.7,1.8的差异,1.8中什么情况下转换为红黑树,构造函数中参数代表的意思2、用什么Map可以保证线程安全,为什么?ConcurrentHashMap为什么能保证线程安全?1.7和1.8原理有什么差异。3、有多少种单例模式,枚举算不算单例,单例模式中不用volatile会导致什么问题?volatile特性是什么?为什么android中不推荐使用枚举。

2024-04-11 14:12:55 1065

原创 分享Android开发中常见的代码优化方案

首先要做相关优化,就得先要大致清晰影响性能的相关因素,这样可以做针对性调优会比较有条理。内存:Java 一般通过 JVM 对内存进行分配管理,主要是用 JVM 中堆内存来存储 Java 创建的对象。系统堆内存的读写速度非常快,所以基本不存在读写性能瓶颈。但由于内存成本要比磁盘高,相比磁盘,内存的存储空间又非常有限。所以当内存空间被占满,对象无法回收时,就会导致内存溢出、内存泄露等问题。异常:抛出异常需要构建异常栈,对异常进行捕获和处理,这个过程非常消耗系统性能。

2024-04-10 14:07:03 481

原创 值得一看的Android广播分析好文

广播会发送到广播队列中不同集合。其中广播队列有三种类型,分别对应优先级从高到底:前台、后台、长广播队列类型。而广播又分三种:黏性广播、无序广播、有序广播。无序广播和有序广播的处理主要要发送广播的时候,而黏性广播则在广播接收者注册时候被处理。一个应用程序允许注册最大的广播接收者是1000个。广播之间的传递也要经历各种权限检查,所以广播不适合在应用间用于频繁的交互。如果你看到了这里,觉得文章写得不错就给个赞呗?更多Android进阶指南 可以扫码 解锁更多Android进阶资料敲代码不易,关注一下吧。

2024-04-10 14:04:32 672

原创 Android程序员找不到工作,真的是因为饱和了吗?

市场饱和的同时为什么一直在招人?因为市场需要的是真正有能力的人,需要的是一个不断提升自我的人。对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。无论您是刚刚开始学习Android开发,还是已经有一定经验的开发者,亦或是想要进阶和突破20~30K薪资范畴。

2024-04-10 13:59:22 911

原创 一个全新的 Android 组件化通信工具

ComponentBus 这个项目已经内部使用了一段时间, 经过几次迭代.他非常小巧, 且功能强大, 并且配有 IDEA 插件作为辅助.ComponentBus 利用 ASM、KSP, 使组件间的通信变得简单且高效.

2024-04-08 11:35:18 328

原创 【Android面经】字节实习,技术岗的保姆级面经!

面试官的考核比较注重算法题和基础,主要的准备方向是 算法 > 基础知识 > 项目相关问题,关于算法题,还要注意以下几点:算法题题干当中如果有模棱两可的地方一定要向面试官确认,比如求数的宽度,直接问面试官是同一层最宽还是不同层最宽;拿到题先不急着做,可以先和面试官说明自己的方法和思路,再开始。力扣easy+mid刷到200道比较稳一点。这些就是关于我的一些实习成长,回过头来我也发现,字节确实是一个能够提升自己的平台,希望自己能够再接再厉。

2024-04-08 11:31:47 877

原创 体验在Android中使用ChatGPT API

这篇文章旨在教大家快速构建一个可以使用ChatGPT api进行聊天的App。

2024-04-03 11:23:21 886

原创 一文掌握 Activity 的启动原理,基于android-30的源码分析

不得不说,Android 每一个版本之前源码都是有一些变动的,今天我们分析了基于 android-30 版本的Activity 的启动的实现流程。首先 Launcher 进程通过 Binder 调用 ActivityTaskManagerService 的 startActivity 方法。

2024-04-03 11:17:57 578

原创 央妈点赞的“共享员工”究竟有多牛X?

众所周知,IT行业技术发展日新月异,工具框架迭代非常之快,所以,对于立志从事IT行业技术岗的同学,没有一定的自我学习能力,跟不上时代的发展速度,就很容易可能被行业所淘汰。在这个越来越卷的时代,共享经济下的共享程序员需要保持灵活性、注重个人品牌建设、关注职业发展和成长、保护自身权益、积极参与行业交流和合作等。通过不断适应和提升自己的能力,共享程序员可以在共享经济的大潮中脱颖而出,实现个人价值和社会价值的双赢。比如共享程序员、共享设计师、共享财务等。4、 Redux、主题、国际化。

2024-04-03 11:08:57 810

原创 如何利用 Kotlin 特性封装 DataStore

是一种数据存储解决方案,由于使用了 Kotlin 协程或者 RxJava 以异步、一致的事务方式存储数据,用法相较于其它存储方案 (SharedPreferences、MMKV) 会更加特别,所以目前网上都没有什么比较好的 DataStore 封装。个人了解了用法后觉得使用起来挺麻烦的,会和很多人一样,觉得无脑用 MMKV 就完事了,个人也对 MMKV 做了非常好用的封装,感觉没必要用 DataStore。直到我看到了扔物线的文章。

2024-04-02 09:58:43 1209

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除