Android
文章平均质量分 78
Android基础,Android Studio,性能优化等
一个玩游戏的程序猿
精通Android开发、Harmony开发、Java开发等;喜欢搞事情 - 爬虫、反编译、软件二次开发等;一个懂业务的研发
展开
-
Android的Context详解 - 揭开Context的神秘面纱
这篇文章是基于我四年前的一篇文章进行更正和深入探究。背景是,2019年4月份我在找工作,看到一个问题,问this,getBaseContext()、getApplication()、getApplicationContext()的区别。当时我写了简单的demo验证,得出了跟网上答案一致的结论。但就在昨天,我发现,这个问题或许还有其他的答案。原创 2023-06-25 20:20:54 · 1184 阅读 · 0 评论 -
混淆(Proguard & R8)和反混淆
本篇来介绍下Android的混淆和反混淆,说起混淆,大家都会很自然地想到Proguard,此外还有R8。事实上,AGP3.3之后,官方默认使用R8做代码优化、混淆和压缩。ProGuard和R8常常用于混淆最终的Android项目,增加项目被反编译的难度。原创 2023-05-28 14:21:50 · 2944 阅读 · 1 评论 -
Lottie加载的一些坑
之前,我写过一篇非常详细的博客来总结Lottie在Android端的使用,https://zhaojun.blog.csdn.net/article/details/115773156 在使用的过程中,其实会遇到一些诡异的问题。通常,这不是使用方式上有什么问题,大都是UE产出的lottie本身存在问题。那么,我们如何辅助UE去定位lottei的问题呢?本篇记录lottie加载遇到的一些坑或问题。原创 2023-04-12 17:35:36 · 2039 阅读 · 4 评论 -
Android性能优化(一)启动优化
以前做手机的时候,我非常重视app的性能优化。其实一直以来,在工作中我总会去强调性能优化的重要性。但是,很多时候,由于一些外界因素,我们对app的一些性能指标不会那么重视。但是,性能优化依然是做好一个产品的重中之重。试想一下,如果用户费了很多时间和流量下载了我们的app,当人家安装好启动app时,却发现我们的app点了之后,很长时间没反应。那如果我是用户,我会二话不说卸载掉。因此,...原创 2020-03-07 17:01:54 · 19430 阅读 · 0 评论 -
基于camera和matrix实现3D旋转动画
二维的动画实现比较简单,此前也有多篇文章介绍过。本次,介绍下如何基于camera和matrix实现一个3D旋转动画。以下提供了两种动画效果:Y轴旋转+透明度从1-0消失,Y轴旋转+透明度从0-1出现。原创 2020-07-07 22:25:10 · 15195 阅读 · 0 评论 -
NDK报错 No version of NDK matched the requested version
编译时报错如下:解决方法:删掉原来的高版本ndk,下载对应的低版本ndk原创 2021-06-29 16:08:34 · 1999 阅读 · 3 评论 -
Android兴趣选择功能的实现
这篇文章,给大家分享一下兴趣选择功能的实现。前段时间在写一个小的应用,其中用到了兴趣选择的功能。什么叫兴趣选择?就是我们在使用一个app的时候,首次打开会弹出一个界面,让我们选择一到多个标签,然后会根据这个标签为我们推荐合适的东西。例如一个阅读类app,当我们选择了几个兴趣后,他会为我们推荐与兴趣相关的小说。或者一个新闻类app,我们选择了兴趣后,它也会为我们推荐相关的新闻。今天,...原创 2019-09-12 17:34:12 · 22781 阅读 · 7 评论 -
Jsoup在Android的使用(三)获取图片
这篇文章,讲一下如何在Android端使用Jsoup爬取网上的图片,例如(百度图片,搜狗图片等)。本来这篇文章应该会在Jsoup在Android的使用(二)爬取简书的文章之后写的。但是,写了标题后,没时间去写,就一直推到现在了。今天,把如何使用Jsoup爬取图片整理一下,希望有需要的朋友可以借鉴。...原创 2020-04-01 22:48:08 · 21188 阅读 · 13 评论 -
Android性能优化(三)绘制优化
这篇博客主要记录自己LeetCode上面做过的数组相关的算法题。当然,目前为止,我做过的算法题不是很多。因此,这篇文章我主要记录简单的算法题。后面也会有专门的文章去记录中等难度的算法题。当然,可能目前而言,我并不觉得自己能够完全解决难度为hard的算法题。以此为记录吧,有时间就会刷,刷完在此记录。申明:所有的题解都是用的java,而且我不能保证时间复杂度最优。原创 2020-04-10 16:37:26 · 16545 阅读 · 0 评论 -
Jsoup在Android的使用(一)
Jsoup是一款Java的html解析工具。Jsoup可能有一些同学不知道,但是,网络爬虫大家或多或少地都有些耳闻吧?网络爬虫是什么?网络爬虫是一种自动爬取网页内容的程序,可以轻松爬取图文、视频等信息。说起网络爬虫,用的更多的还是python爬虫。在几个月之前,我也体验过python爬虫程序,真是简单又强大。而我们接下来要说的Jsoup,则是Java的爬虫工具。一.为什么使用J...原创 2019-08-25 21:44:06 · 27152 阅读 · 0 评论 -
Android自定义ProgressBar
好久不写博客了,今天来总结一下自定义ProgressBar的实现。上周做一个游戏资源的在线更新功能,设计给的加载进度条设计图,是无法使用Android原生的ProgressBar来实现的。在百度和GitHub上搜了搜相关的资源,都不符合我的要求。于是,我只能自己去写。先给一下最终的效果: 上面就是我实现的ProgressBar的效果,与业务结合起来,分为几个阶...原创 2019-11-30 00:41:20 · 23358 阅读 · 2 评论 -
使用Eclipse和Tomcat搭建Android服务端
作为一名Android开发者,不懂一点服务端的知识有时候真的不行。比如你做好了用户登录请求的功能,想找服务端验证一下是否正确。服务端同事告诉你他很忙,等他把接口写完了再验证。这时候呢,我们完全可以自己搭建一个小的服务端,自己验证下是否正确。这篇博客,就是教不懂如何搭建服务端的小白从0开始搭建服务端的。一.下载和安装Eclipse 这里推荐三种下载方式: 1.去官网下...原创 2019-04-24 12:34:05 · 26965 阅读 · 2 评论 -
【干货】Android实现支付宝当面付
前段时间,公司有个项目,要用Android平板做一个智能点餐系统。与我们常用的APP不同,此项目仅部署在商家的终端(即Android的平板设备),而且由于时间等原因,领导不打算部署服务器。也就是说,要完全使用Android来实现。顾客点餐后,系统发起支付宝当面付请求,生成当面付二维码,顾客支付完成后,订单下发。具体的一些业务不展开细说。 调研当面付在Android...原创 2019-03-03 15:09:54 · 28835 阅读 · 16 评论 -
OkHttp源码解析(三)Interceptor
这篇文章,对okhttp的另一个非常重要的概念-拦截器(Interceptor)进行源码分析。或许,有的朋友就要说了,前面两篇文章分别总结了两种请求的源码以及Dispatcher的源码,为什么突然扯到Interceptor了呢?接下来,我们先了解一下,拦截器是什么。一、Interceptor是什么 Interceptor翻译过来就叫拦截器。引用官网的解释:拦截...原创 2020-03-15 15:47:55 · 18042 阅读 · 0 评论 -
OkHttp源码解析(一)同步请求和异步请求
接下来几篇文章,将会进行OkHttp的源码解析。还记得去年花了半天时间去进行Volley的源码解析,其实去年那篇文章我也说过,Volley已经算是一个过时的网络请求框架。因此,接下来,我会选择主流的网络请求框架OkHttp进行源码解析。今天,主要从OkHttp的两种请求方式开始说起,也就是同步请求和异步请求。一、前言 作为一名优秀的程序员,一定要有分析源码的经...原创 2020-03-14 23:37:15 · 19417 阅读 · 0 评论 -
Github提交代码失败
差不多有2年没有往Github提交代码了,最近想维护一下自己三年前的一个小项目,发现代码提交遇到了些问题,在这里总结一下。原创 2022-07-27 19:52:00 · 4512 阅读 · 7 评论 -
TextView描边、渐变、阴影效果
前段时间的需求,涉及到大量带各种效果的字体的使用,比如描边、渐变、阴影等。一般情况下,我们在Android开发中用到花里胡哨字体的情况不多。但是,拿到了这样的需求,我们还是要实现这样一款支持多种效果的字体。其实,网上也有一些实现各种效果字体的方法。这篇博客,将把描边,渐变,阴影等结合到一起,实现一款自定义的文本框。一.撸代码前的思考 在开始动手之前,我们先明确...原创 2019-11-13 10:20:24 · 22163 阅读 · 2 评论 -
OkHttp源码解析(二)dispatcher
上一篇文章,总结了okhttp的同步请求和异步请求,并跟踪源码进行了分析。我们发现,不管是同步请求还是异步请求,都离不开一个类Dispatcher。事实上,Dispatcher是okhttp的一个非常关键的类,是okhttp请求的分发器。这篇文章,我们重点分析一下Dispatcher的源码。 Dispatcher的源码不多,200多行。但是,它的设计非常精妙,而且...原创 2020-03-15 13:50:07 · 18189 阅读 · 0 评论 -
关于工厂类app的一些想法
前天,在火车站候车的时候,一个技术群里有朋友在问工业app的问题。该朋友的老板让他开发一款工业类app给工厂使用,他觉得app在工厂内没啥用处。其实,他这样认为是不合理的。该朋友以前从事互联网行业,一提起app,就想到短时频分享、直播、百度地图等。我在去年恰好在一家制造业公司做工业大数据类的app开发,我觉得,工业类的app还是大有可为的。一.工业类app和互联网app的区别...原创 2019-09-17 21:11:16 · 22013 阅读 · 4 评论 -
Android性能优化(二)内存优化
上一篇文章,我总结了一下app启动优化的一些知识。这篇文章,总结一下内存优化相关的一些知识。内存优化,相比于启动优化,可能没那么明显。为什么这么说呢?启动快慢,我们体验一次就能体验出来。而内存增长,我们操作一次,两次,三次......如果不借助什么工具或者命令的话,我们的肉眼并不能发现什么。因此,在很多情况下,我们会忽视掉app内存这一块。可能大部分程序员,知道自己的app存在内存...原创 2020-03-07 22:40:45 · 19522 阅读 · 0 评论 -
图片区域解码BitmapRegionDecoder
问一个简单的问题:如何加载一张图片?可能很多朋友会说使用Glide,Picasso等图片加载库来加载图片,或者使用BitmapFactory来加载图片。但是,大家应该知道,无论是使用Glide还是使用BitmapFactory加载图片,加载的图片都是需要做压缩的,不然会导致oom。那么,如果我不允许压缩,要加载一张高清的大图,那么如何实现?这就需要使用图片区域解码BitmapRegionDecoder原创 2020-03-28 23:08:06 · 20328 阅读 · 2 评论 -
如何卸载Android自带系统应用
2022年年底,小米正式发布了MIUI14,说MIUI14可以删除8个核心应用以外的所有应用。然而我更新MIUI14后,并不像说的那样,再一次被当猴耍了。转念一想,国产的room怎么会做到这么良心呢?原创 2023-02-05 14:24:07 · 11005 阅读 · 7 评论 -
极光推送在Android端的集成
这个周末,是最颓废的一个周末了。工作以来,基本每个周末都会学习点知识或者总结些东西。这个周末,身体不是很舒服,结果躺床上打了两天农药,也没有写博客。今天周一,正好我工作不忙,把上周末的博客补上。今天的博客,源于今天项目中的一个小需求:推送。这个需求不是我来做,但是我也有点兴趣,就研究了一下极光推送,并尝试着做了集成。好了,接下来总结一下极光推送在Android的集成和使用。一....原创 2019-09-23 21:28:14 · 20902 阅读 · 0 评论 -
Jsoup在Android的使用(二)获取简书文章
这篇博客延迟很久了,因为前段时间有很多杂事琐事处理。这个周末,暂时没什么事情。把Jsoup在Android的使用总结一下。自己平时喜欢写点小的应用,最近写的小应用也使用到了Jsoup。上篇文章我们简单介绍了一下Jsoup,并且知道了如何使用Jsoup与想要爬取的链接建立连接。今天,我将以一个实际的小项目总结一下如何使用Jsoup爬取简书主页的文章。学会了这个小项目后,你基本可以使用...原创 2019-08-28 23:36:24 · 21958 阅读 · 7 评论 -
Android FrameWork(一)init和zygote
这几天一直想看一下Android FrameWork源码,但其实自己也不知道从何看起。想了想,姑且从Android系统的启动流程来开始看,用到什么就看哪一部分的知识。我们都知道,Android系统是基于Linux系统的。在Linux系统中,所有的进程都是由init进程直接或者是间接fork出来的,比如zygote(受精卵)进程。其实,每一个app都是一个进程。zygote进程启动之后,再启...原创 2019-04-13 18:20:52 · 25774 阅读 · 0 评论 -
Android FrameWork(三)SystemServer(下)
上次说到,从Zygote.forkSystemServer()一直到SystemServer.main()。这篇博客,将从SystemServer的main方法开始说起。没看过SystemServer(一)的可以先去看一下:Android FrameWork之SystemServer(一)一.SystemServer.main() 首先,SystemServer.java的...原创 2019-04-22 18:26:58 · 24428 阅读 · 0 评论 -
Android FrameWork(二)SystemServer(上)
上次在写init和zygote的时候,说起过,SystemServer是Android系统的系统服务模块,主要功能是管理Android的system service。system_server进程是zygote进程通过fork方法创造出来的第一个子进程,而且当system_server进程启动失败时会导致zygote进程自杀重启。今天,看一下SystemServer的启动过程。一.Zy...原创 2019-04-22 00:44:46 · 24217 阅读 · 0 评论 -
Android12(target31)对传感器采样率限制
target31谷歌做了一些列的适配,其中对看似无关紧要的传感器采用率做了限制,最近几年很火的摇一摇开屏广告就是基于传感器去实现的。这篇文章,我们就一起去看一下target31对传感器采样频率的限制。原创 2023-02-09 15:51:02 · 1849 阅读 · 0 评论 -
Gradle7适配
AS更新后,许久没有新起项目。集成greendao时,遇到了些问题,主要是因为greendao需要配置calsspath和plugin,而gradle7之后有些变化。android build-tools升级到31后,AS强制要求使用gradle7,否则无法编译。本篇以配置greendao为例,示范下gradle7之后如何配置classpath和plugin,以及gradle7其他配置。原创 2023-01-15 13:43:02 · 2584 阅读 · 0 评论 -
Jetpack组件(四)LiveData
LiveData是一个可观察的数据类,而且可感知Activity、Fragment、Service的生命周期,确保LiveData仅更新处于活动生命周期状态的组件观察者。原创 2023-01-03 17:42:19 · 175 阅读 · 0 评论 -
Jetpack组件(一)Jetpack组件简介
Jetpack是什么?相信做Android开发的同学都或多或少地听过或用过Jetpack,即使你认为自己没用过,但实际上你可能 已经不知不觉中用过了。因为Jetpack组件库非常庞大,它包含了很多的优秀组件。本篇不去详细展开介绍Jetpack组件库的某个或某些组件,只做一个简介,后续准备用一系列的文章来详细介绍Jetpack组件库的常用组件。原创 2022-11-27 12:25:06 · 1773 阅读 · 1 评论 -
Jetpack组件(三)Lifecycle
本篇是Jetpack组件系列文章的第三篇,将介绍第二个组件Lifecycles。Lifecycles为开发者管理 Activity 和 Fragment 生命周期提供了极大的便利,帮助开发者书写更轻量、易于维护的代码。原创 2022-12-09 11:43:51 · 710 阅读 · 0 评论 -
Jetpack组件(二)DataBinding
一直在犹豫去写Jetpack组件的一系列文章,实话实说,我本身的项目中也很少有使用到Jetpack的一些库。那么在写文章之前,我还是要去实际的写demo。准备按照Architecture(架构)、Foundation(基础)、Behavior(行为)和UI(界面)的顺序去写。本篇先总结一下DataBinding的使用。原创 2022-11-30 11:31:45 · 925 阅读 · 0 评论 -
使用WebView的坑:A FrameTracingController method was called on thread xxx
最近使用WebView做一个需求,本来功能都OK的,相关日志也很正常。然而跟外部团队联调时,发现使用了WebView的若干方法后,功能不ok了,且日志也没了,经过断点调试发现问题:java.lang.Throwable: A FrameTracingController method was called on thread xxx原创 2021-04-30 22:12:39 · 296 阅读 · 1 评论 -
Android如何用release包抓包
首先说明,在Android以上的app,已经不允许release包抓包了,但是我们自己打的relase包可以通过修改配置文件达到抓包的目的。原创 2020-12-14 23:30:20 · 3326 阅读 · 5 评论 -
AndroidStudio对apk签名
现在大家都是使用AndroidStudio来做Android开发了,最早是使用eclipse + adt来做开发。本篇主要记录下如何使用AS创建签名文件并对apk进行签名。原创 2020-05-27 22:32:13 · 17956 阅读 · 0 评论 -
AndroidStudio自定义编译的apk文件名
通常,我们使用AndroidStudio编译apk,都会默认生成app_debug.apk的文件,这种不具备任何含义的命名非常不友好。本篇主要讲解如何自定义编译的apk文件名。原创 2020-07-12 22:55:39 · 15349 阅读 · 3 评论 -
ANR问题分析定位
ANR(Application Not Responding)通常发生在主线程被长时间阻塞,导致无法响应用户的操作,一般会弹应用无响应的对话框让用户选择等待或者强制退出。原创 2022-10-20 20:56:45 · 1196 阅读 · 2 评论 -
AndroidStudio报错编译器 (1.8.0_192) 中出现异常错误
今天拉了一下项目的最新代码,发现编译失败。报错编译器 (1.8.0_192) 中出现异常错误。原创 2022-09-28 16:14:48 · 2824 阅读 · 0 评论 -
Material Design之CoordinatorLayout实现滑动折叠
前段时间PM提了一个需求,实现一种滑动折叠效果,这种效果与掌上英雄联盟的战绩页面很像。经过调研,发现使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout可以轻松实现这一效果。先给大家看一下掌上英雄联盟的效果,大家可以先确定是不是自己想要的效果(PS:这战绩真不是我打的,我发誓。。。)。一.布局文件 ...原创 2019-07-17 23:26:48 · 24506 阅读 · 0 评论