- 博客(81)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android App 架构设计相关资料汇总
只要有1,2年工作经验的程序员,多多少少都会接触到架构东西。可能平时工作中不一定会有机会从0到1完完全全自己去设计一套架构出来,但是如果想成为高级工程师,技术专家,架构师……尽早接触架构方面的知识是有利无害的。我收集了很多材料,现在汇总在这里,方便查阅。
2020-03-05 22:51:41
2264
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 移动端跨平台技术相关资料汇总
移动端的跨平台技术已经发展了很多年,涌现出了很多技术,越来越成熟,就像这两年比较火的Flutter,就是跨平台技术的一种。我接触跨平台技术也有几年,收集了很多材料,现在专门在这里汇总,方便查阅。
2019-12-02 17:26:29
1138
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 HTTPS相关资料汇总
现在各大公司的网站和APP基本上都已经使用HTTPS了。作为一名合格的开发者,不了解HTTPS是不对的。所以这段时间我找了相关资料,好好地学习了HTTPS。现在把相关资料整合在这里,既方便了自己查阅,也给予了大伙们一些参考。
2019-08-22 23:03:26
799
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android WebView相关材料汇总
在APP里面嵌套H5页面已经是一件很平常的事情了。Android是通过WebView来加载H5页面的。不过Android的WebView缺陷蛮多的,需要对其进行一些优化,不然是无法很好展示H5页面的。对于WebView,我也是研究了一段时间了,收集了很多材料,现在专门在这里汇总,方便查阅。在2020新年来临之际,我创建了一个开源项目AndroidWebView,该项目重在介绍WebView的基本用法、功能优化和常见问题的解决方案等等,有较详细的demo,欢迎各位star和fork。
2018-12-13 15:28:22
8264
转载 从写简历,到面试,到谈薪酬的那些技巧和防坑指南
一般面试都有这个环节,好好准备,提前练习,别回答的时候支支吾吾,或者啰嗦半天说不出重点。我是谁——我叫 xxx,目前就职于京西公司,岗位是 Java 高级工程师。我的技能——我从事 Java 开发已经 6 年了,有 3 年电商行业的开发经验,参与了京西公司海外电商项目,在项目中我主要负责 aa、bb 功能。我最合适——之前听 HR 介绍,贵公司也要做海外电商,我觉得我的经验能用得上。而且我也希望能完整经历海外电商从零到一的过程,这对我来说也是一个挑战、一个成长的机会。
2023-03-16 16:08:23
1458
原创 Android 判断当前设备是手机还是平板的最有效的方法【2022版】
之前已经写过一篇文章介绍了,详见《Android判断当前设备是手机还是平板的最有效的方法》但是经过一段的时间的使用,发现在一些学习机上会出现误判。学习机明明是10英寸的,但是代码算出来的结果却是5英寸。我猜应该是学习机的硬件信息有误造成的。竟然会误判,那该怎么办呢?.........
2022-07-22 15:44:30
7129
4
转载 Flutter的生命周期
Android 的 Activity 和 Fragment 有生命周期,作为可以用来开发 Android APP 的 Flutter 也是有生命周期的,今天看到一篇很不错的文章,就转发一下。Flutter 的生命周期分为两个部分,一个是 Flutter 本身的组件的生命周期,一个是平台相关的生命周期。
2021-11-02 15:21:03
4166
原创 如何在电脑上配置多个不同版本的 Flutter SDK
在本月初,谷歌发布了 Flutter 2.0 正式版,其中对于大多数 Flutter 开发者影响最大的就是 Dart 的空安全。因为只要把 SDK 升级到 2.0,那么你之前写的代码就一定得修改,而且需要修改的地方还不少,如果项目是你自己的,那还好,随便搞。但要是公司的,那就得小心了,不然分分钟钟影响工作,增加你的工作量。Flutter 在版本管理这块,相较于 Android 来说,是真的差。没有可视化管理工具,不能随便切换版本,升级 SDK 后会覆盖旧的……难道就没办法在不影响之前的 SD
2021-03-27 16:35:17
4598
1
原创 Flutter 的生命周期,略知一二
生命周期是一个组件加载到卸载的整个周期,熟悉生命周期可以让我们在合适的时机做该做的事情,例如:APP 正在播放视频,当 APP 被切换到后台,则这个时候最好是暂停视频。Flutter 的生命周期可以分为两个部分: - Widget 的生命周期 - APP 的生命周期
2021-02-08 16:36:48
2330
1
转载 剖析 SharedPreferences apply 引起的 ANR 问题
项目中 ANR 率居高不下,从统计上来看排在前面的有几个都是 SharedPreferences(以下简称 SP)引起的。接下来我们抽丝剥茧地来分析其产生原因及如何解决。crash 堆栈信息如下。从 crash 收集平台上来看,有几个类似的堆栈信息。唯一的区别就是 ActivityThread 的入口方法。除了 ActivityThread 的 handleSleeping 方法之外,还有 handleServiceArgs、handleStopService、handleStopActivity。
2020-11-15 22:16:39
1646
原创 如何做好一名技术面试官
已经有几年开发经验的同学,不管是不是团队中的核心,多多少少都会被 Leader 安排去做面试官,帮团队招贤纳才。就拿我来说吧!这2年也是陆陆续续接到一些面试任务,有一些自己的收获,所以在这里分享给大家。
2020-09-22 18:40:45
2815
原创 计算机网络常见面试题
1. 计算机网络体系结构OSI七层体系结构、TCP/IP四层体系结构OSI:Open Systems Interconnection Reference Model,开放系统互连基本参考模型 OSI/RM两种体系结构的区别OSI采用七层模型,TCP/IP是四层模型。TCP/IP的网络接口层没有真正的定义,只是概念性的描述。而OSI把它分为2层,每一层功能详尽。在协议开发之前,就有了OSI模型,所以OSI模型具有共通性,而TCP/IP是基于协议建立的模型,不适用于非TCP/IP的网络。实际应
2020-08-22 11:38:20
1565
转载 你猜一个 TCP 连接上面能发多少个 HTTP 请求
一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么,大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来。但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?
2020-07-26 17:22:24
644
原创 数据结构与算法 Java 版
我最早是在大一的时候,就接触了`数据结构与算法`。说实话,算是一场噩梦吧!非常难学,当时学得很懵逼,当然现在也是如此。竟然这么痛苦,那为啥我还要继续学呢?还专门写了篇文章?还弄了个开源项目 DataStructureAndAlgorithm?具体的缘由请听我慢慢道来。
2020-07-17 15:52:00
917
转载 你真的了解WebView么
WebView 是我们前端开发从PC端演进到移动端的一个重要载体,现在大家每天使用的APP,WebView 都发挥着它的重要性。接下来让我们从 WebView 看世界。
2020-07-11 19:10:45
864
原创 Android检测模拟器
模拟器大家都应该很熟悉的吧!现在市面上的模拟器多的数不清,例如:雷电模拟器、夜神模拟器等等。而因为模拟器所搭载的Android系统是阉割过的,一些安全相关的功能都没有了。这就造成了一个安全问题,在模拟器运行的APP,可被动态调试、抓取数据等,从而增大APP被破解、敏感数据遭泄露的风险。所以一些公司就会禁止用户在模拟器中使用他们的APP。
2020-06-20 22:11:15
7421
原创 Android差异化打包,实现一套代码打出不同的APP
当一个APP成熟起来,功能会越来越多,业务会越来越复杂,面向的用户群越来越大。这个时候为了更进一步的发展和扩大业务,我们可以对APP进行拆分,做成两个甚至更多个的APP,每个APP都服务特定的用户群。为了缩短开发时间,降低维护成本,肯定是不能再单独新建一个项目工程的。那怎么在原有的项目工程来进行开发,从而实现一套代码能够打出不同的APP呢?这就是本篇文章要介绍的“差异化打包”。
2020-05-30 22:37:06
3862
11
转载 面试常客:Intent 能传递多大 Size 的数据?| 附阿里的建议
作为 Android 开发,日常 Coding 时,最频繁的操作应该就是操作 App 内的一系列 Activity。而在 Activity 间传递数据,就需要借助 Intent。不少资料中写到,Intent 在 Activity 间传递基础类型数据或者可序列化的对象数据。但是 Intent 对数据大小是有限制的,当超过这个限制后,就会触发 TransactionTooLargeException 异常。那么今天就来聊聊 Intent 传递大数据时,为什么会抛异常,以及如何解决它。
2020-05-13 11:32:00
1016
转载 阿里妹:让咱们从头到尾说一次 Java 的垃圾回收吧?
之前上学的时候有一个梗,说在食堂里吃饭,吃完把餐盘端走清理的是 C++ 程序员,吃完直接就走的是 Java 程序员。确实,在 Java 的世界里,似乎我们不用对垃圾回收那么的关注。很多初学者不懂 GC,也能写出一个能用甚至还不错的程序或系统。但其实这并不代表 Java 的 GC 就不重要。相反,它是那么的重要和复杂,以至于出了问题,那些初学者除了打开 GC 日志,看着一堆0101的天文,啥也做不了。今天,新零售技术事业群的率鸽(花名)就从头到尾,完整地聊一聊 Java 的垃圾回收。
2020-05-02 19:01:24
699
原创 Android WebView传字符串给JS,时好时坏,为啥?
做过与H5交互相关的工作的同学,应该是知道如何传值给H5的。WebView有一个方法 evaluateJavascript() ,这个就可以用来执行JS代码,即可以调用H5已经定义好的JS函数,当然我们也可以顺便传值过去。
2020-04-30 11:52:17
1608
原创 Android Studio如何连接第三方模拟器
如果大家用过Android Studio自带的模拟器,应该都深有体会,很吃电脑配置。如果电脑配置较差,模拟器用起来那叫一个卡啊!不过现在市面上有很多种模拟器了,例如:夜神模拟器、雷电模拟器等等,都蛮不错的,用起来不卡。接下来就简单说一下如何使用吧!
2020-04-11 17:20:21
109873
1
转载 Android面试必问,事件分发机制
事件分发机制不仅仅是核心知识点更是难点,并且还是View的一大难题滑动冲突解决方法的理论基础,因此掌握好View的事件分发机制是十分重要的。事件分发的对象是点击事件(Touch事件),而当用户触摸屏幕时,将产生点击事件。
2020-04-07 10:40:46
2581
转载 Android WebView的默认缓存策略
今天测试反馈,前端更新了H5的内容,但是客户端通过webview的方式打开后,发现内容没有更新,使用charles抓包,发现客户端访问访问时,连请求都没法发出。于是测试的妹子在企业微信中@我,看到消息有点懵,记得去年就排查过webview的缓存方式,怪没有记录,今天决定把问题重新记录一下。
2020-03-31 10:47:42
5783
1
转载 Android知识图谱:我们到底需要学习哪些Android知识?
如果你也学习Android,那么你大概率会看过我的文章。经常有读者给我留言:“该怎么学习Android?”、“日常学习Android的方法是什么”。所以,今天,我将献上一份《Android知识图谱》,以自身的经验 & 所见所闻,旨在告诉大家,学习Android,实际上需要学习什么内容,希望你们会喜欢。
2020-03-25 10:53:31
899
原创 Java的四种引用类型
Java有四种引用类型:强引用、软引用、弱引用、虚引用。1. 强引用(StrongReference)强引用是最常用的引用。如果一个对象具有强引用,那 GC(Gabage Collection,垃圾回收)绝不会回收它。Object obj = new Object(); // 强引用当内存空间不足,Java虚拟机宁愿抛出 OutOfMemoryError 错误,使程序异常终止,也...
2020-03-21 10:17:32
6308
1
转载 懂球帝Android客户端WebView优化之路
H5页面承载了懂球帝文章、活动、广告等核心业务场景,所以经过了长期的迭代之后,懂球帝客户端H5相关的业务也非常复杂,这里面包含了分享、支付、用户评论、点赞等交互,各种业务交织杂糅在一起,导致这一块的代码难以维护。笔者对业务进行了全面的梳理,在重构这块业务的过程中也收获了很多,同时考虑到很多产品都有相似的应用场景,分享出来希望对大家有帮助。介绍下全文的结构和思路,首先笔者对现有业务进行抽象,提取出其中的调用关系和信息流,第二部分简单地介绍了项目中之前采用的方案和缺点。第三部分着重介绍了新的设计架构。第四部分则
2020-03-15 11:03:04
2548
1
原创 解决 Android 10 获取不到定位信息的问题
最近国内很多手机厂商都推送基于 Android 10 开发的自家系统了。之前其实已经对公司的APP进行适配了,但还是发现了新坑。那就是定位的问题。已经申请了定位权限,但是依旧无法进行定位。我用的是高德的定位,项目工程的 targetSdkVersion 为26。经过不断尝试,最后才发现,竟然要开启手机的定位服务,才能获取到定位信息。
2020-03-14 10:43:24
6865
2
转载 Android框架式编程之架构方案
目前移动端应用市场已经是百花齐放,很多独角兽公司都是通过App创业发展起来的,现在App类型更加丰富,功能越来越完善,基本上涵盖了各个行业的每个角落。为了开发出更加有竞争力的App,不仅需要功能上有创新,内容也需要更加多元化,这样就出现了相对巨大的工程。这些工程代码不停添加,如果没有一个好的架构,那么所有代码都会强耦合在一起,功能之间也会出现很多依赖,那么就会出现很多问题
2020-03-01 18:09:11
579
原创 我的程序员之路
如果从接触编程算起的话,我在程序员这条路上,也走了快7年了,4年大学,3年工作。先来说说自己是怎么踏上程序员这条路的吧!我和大多数人一样,在高考之前,是没怎么认真想过未来要从事什么职业的,脑子里大概就想着将来要赚很多很多钱,过幸福快乐的生活罢了。我是2013年参加高考的,那时广东已经实行了考后填志愿的政策,所以高考后,有较长的时间去考虑自己的未来。
2020-02-29 20:00:54
727
转载 计算机及相关专业的同学如何规划大学四年?
这几日在小区门口看到了儿童编程的广告,去年教育部将Python纳入全国计算机等级考试科目,甚至山东省的小学信息技术教材中也加入了Python内容。由此可见国家对计算机科学的重视,也能看到全民学习编程的热情。显然部分原因是市场推动,计算机相关专业毕业生的薪资近几年持续走高,某些岗位优秀的应届毕业生就能拿到30~40万年薪。这似乎给了计算机及其相关专业的大学生一些动力,同时也带来了一些压力。大家应该认真思考如何规划自己的大学时光,因为这几年的努力直接决定了你毕业时能进入什么样的公司,能拿到多少薪水。
2020-02-27 10:29:45
1265
原创 Android WebView拍照和上传文件
拍照上传或者上传图片、视频、文档等文件,这种需求对于移动端来说是很基本的。Android原生实现这种需求没什么特别大的难度。但如果是嵌套的H5页面的话,就需要踩点坑了。Android 的这个 WebView 真是个不让人省心的控件啊!
2020-02-22 17:35:55
1787
原创 Android WebView播放视频并支持全屏
支持视频在线播放的网页随处可见,前端开发不需要做太多的工作就可以实现大多数需求。因为播放视频的具体功能是由浏览器核心在处理的。我以为Android的WebView应该是默认支持视频播放的,不会有太大的问题,但是经过测试后,还是发现了不少坑。主要有两个:有些手机,无法正常播放视频,出现白屏或者只有声音没有画面等;视频无法全屏播放。
2020-02-13 16:25:09
6865
原创 Android清除WebView缓存
用过WebView的同学都清楚,WebView默认是会自动缓存网页资源的。虽然前端H5网页有自己一套缓存机制(不懂的同学,可以看看这篇文章手把手教你构建 Android WebView 的缓存机制 & 资源预加载方案),但是在某些场景下,还是需要原生主动去做清除缓存操作,即清除WebView的缓存。大多数文章都会说,使用下列的方法就可以清除了。
2020-01-22 10:33:57
5392
转载 大龄程序员的未来在何方
大龄程序员的界定老早网上有人说,软件开发干不过30岁,后来又有人说干不过35岁,后来又有人说干不过40岁,后来又有人说干不过45岁……各种说法很多,所以我写了一篇文章,题为“程序员的年龄天花板”来讨论这个问题,感兴趣的可以跟进去看看。这里我采取通俗的说法,认为过了30岁的程序员算是大龄程序员,只是为了讨论方便,不同意的请保留自己的意见。
2020-01-01 17:48:25
453
转载 程序员的年龄天花板
我是一个老程序员了, 2014 年我不断在思考一个问题:程序员的年龄天花板到底是多少岁?其他行业里的老将农村有一些老人 70 多岁了还能种地,不但能种小麦玉米,还能在自己房子后面种点白菜、萝卜、西红柿、豆角什么的,自给自足,不靠孩子赡养。褚时健70多岁承包荒山开始种橙,现在褚橙是知名品牌。我们家不远处有个同仁堂,同仁堂里有中医馆,中医馆里都是老先生,太年轻的没人看。你看国家高级领导人,都没个年轻的,60多岁就算少壮了……
2020-01-01 16:35:00
380
转载 程序员保值的4个秘密
在国内,很多人说程序员是吃青春饭的,一开始说过了30岁就得转行,后来又有人35岁是一道坎……看起来好像程序员真的和风尘女子一样,注定有朝一日会年老色衰不再受人青睐。No!我要说,不是这样的!其实别人说的话,听一听就算了,决定还得自己来做。面对别人的怀疑、否定、讥讽,我们只需要坚定地前行,做给他看。行动是最好的证明,多坚持一秒,未来就会不同。现在就实打实的来看看程序员的价值之路在何方。
2020-01-01 16:26:20
272
原创 Android WebView加载H5页面,H5页面使用URL Scheme唤起APP失败
最近遇到了一个问题,H5页面使用URL Scheme唤起第三方APP,在手机浏览器已经测试通过了,但是在APP里面,却失败了。本篇文章不介绍如何使用URL Scheme唤起APP,如果想知道的朋友,可以查看下列文章:Android URL Scheme Android 利用scheme协议进行跳转 qq. 微信分享出去的页面。如何唤起app,调到指定的页面回归正题,我们...
2019-12-20 18:18:33
5351
1
原创 Android Studio打包生成自定义文件名的apk
Android Studio打包生成自定义文件名的apk Gradle 4.0以前在app下面的build.gradle文件中,添加如下代码即可。apply plugin: 'com.android.application'static def getTime() { return new Date().format("yyyyMMdd_HHmm")}android { compileSdkVersion 28...
2019-12-14 15:51:37
777
转载 Android使用WebView定位问题
最近遇到了一个问题,有一个需求是使用 WebView 来加载一个网页url,H5通过js来获取位置定位信息。以前也进行过H5需要位置信息的功能开发,不过以往的方案都是使用 Android 原生定位(集成高德/百度SDK),再将位置信息传给H5来实现,不过这次由于考虑到apk大小的问题(不再集成高德SDK)以及“懒”(不用再写定位的代码),所以就准备都让H5来做。本来认为这个方案应该是很简单的,没想到遇到了一个大bug——H5无法获取到位置信息。此时本想第一时间甩锅给H5(我的代码怎么可能会有问题?!!),然
2019-10-24 09:37:43
733
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人