![](https://img-blog.csdnimg.cn/20191129111652645.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
高级要求
文章平均质量分 93
Chin_style
试着把内容大声念出来,说话与倾听都会用到大脑的不同位置,与人交谈效果最好
展开
-
实际开发中常用的Git操作
git是用C语言开发的,以追求最高的性能。git自动完成垃圾回收,也可以用命令git gc --prune直接调用。原创 2021-06-13 22:51:37 · 634 阅读 · 0 评论 -
Android Framework 架构介绍,Binder理解
一,Android Framework架构介绍1.Android系统架构Android本质就是在标准的Linux系统上增加了Java虚拟机Dalvik/ART,并在Dalvik/ART虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。Android架构Linux 内核原生.原创 2021-03-14 16:21:13 · 3690 阅读 · 1 评论 -
深入理解Java虚拟机-Java内存区域,垃圾回收机制和内存分配策略
本篇主要参考周志明老师的《深入理解Java虚拟机》第三版一个Java程序,首先要经过javac编译成.class文件,.class文件是给JVM进行识别的,JVM将.class文件加载到方法区,执行引擎会执行这些字节码,执行时,会翻译成操作系统相关的函数。过程如下:Java文件->编译器->字节码->JVM->机器码Java能够做到“一处编译,处处运行”,这与.class文件的作用是密不可分的。无论在什么环境中将Java源文件编译为.class文件,都能够通过JVM执.原创 2021-03-08 15:00:27 · 462 阅读 · 0 评论 -
并发编程:线程的共享与协作
一,前期基础知识储备之前的博文,《Android进程和线程详解》里有一些关于线程的基础知识。1)什么是并发?指多个线程操作同一个资源,不是同时操作,而是交替操作,只不过因为速度太快,看起来是同时执行(单核 /多核CPU均是如此,因为通常任务的数量远远多于CPU的核数,所以任务最终也是交替执行的)。通过时间片轮转机制RR(CPU时间片轮转机制,cpu给每个进程分配一个“时间段”,这个时间就是这个进程允许运行的时间,如果当这个进程的时间片段结束/阻塞,操作系统就会把分配给这个进程的cpu剥夺,分原创 2021-03-02 22:38:20 · 363 阅读 · 0 评论 -
实例:Java注解深入浅出
一,前期基础知识储备1)Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。日常开发中新建Java类,我们使用class、interface比较多,而注解和它们一样,也是一种类的类型,他是用的修饰符为 @interface。2)Java内置的注解J原创 2021-02-28 22:22:09 · 300 阅读 · 2 评论 -
实例:Gson解析泛型对象
一,前期基础知识储备1)Java泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。2)泛型使用泛型使用方式,分别为:泛型类、泛型接口、泛型方法。①泛型类,泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为原创 2021-02-28 15:11:05 · 8021 阅读 · 2 评论 -
实例:Android中运用反射机制
一,前期基础知识储备反射反射(Reflection)是程序在运行状态中动态检测,访问或者修改类型的行为,具体表现为以下两个方面:对于任意一个类,都知道这个类的所有属性和方法。 对于任意一个对象,都能够调用它的任何一个方法和属性。反射可以让我们在运行时获取类的属性和方法,构造方法,父类,接口等信息,还可以让我们在运行期实例化对象和调用方法等。例如, // 获取系统属性 public static String getSystemProperty(String key)原创 2021-01-28 14:56:47 · 1698 阅读 · 1 评论 -
实例:下载服务器zip资源(Json,Png,多种文件)
一、前期基础知识储备1)OKGO库地址:https://github.com/jeasonlzy/okhttp-OkGo作者已停止维护,所以使用时需要在文档基础上,做必要的修改。2)笔者用以下载服务器上一些简单的资源,比如Json,Png,这些资源都是打包成zip包的形式,尽量减小包体,便以传输。3)由于是zip的形式传输,所以资源下载到本地之后,会有一个解压缩保存本地的过程,解压缩完毕得到对应资源后,需要删去zip包。4)涉及到Json解析的时候,使用Gson库进行解析。二、.原创 2020-12-30 11:30:05 · 722 阅读 · 0 评论 -
实例:使用OKGO下载网络压缩包资源,然后解压缩放在本地使用
一,前期基础知识储备1)svg图片较大,所以需要压缩为zip包后放在服务器上,下载使用;2)使用OKGO库进行网络资源下载;3)使用工具库Blankj中的解压缩工具进行解压缩后,然后保存在本地;4)下载并且解压缩zip成功后,删除本地zip包,只保留解压缩得到的svg资源。二,上代码,具体实现1)引入OKGO和Blankj依赖:implementation 'com.lzy.net:okgo:3.0.4'implementation 'com.blankj:utilcod原创 2020-09-24 11:55:42 · 462 阅读 · 0 评论 -
实例:开发中使用到的一种表现比较可控的自定义弹窗
一,前期基础知识储备最近在为几个应用接入积分系统,其中使用到弹窗较为频繁,比如“登录弹窗”,“转盘弹窗”,“商城弹窗”等等,样式各有不同,所以就把此前使用的自定义弹窗在修改了一下,然后统一使用该弹窗,为了追求较好的应用内展示表现和稳定的性能。解锁资源的弹窗每日登录弹窗展示弹窗的地方较多,为了追求统一性,会对弹窗做一些改善。二,上代码,具体展示1)写入布局,注意需要①控制所有弹窗居中显示;②为所有弹窗写入一个颜色更深的透明弹窗,以突出弹窗内容;以“解锁资源”弹窗为例,布局结原创 2020-08-28 11:09:43 · 373 阅读 · 2 评论 -
实例:Google Play游戏服务接入排行榜和成就系统
一,前期基础知识储备1)排行榜官方文档:https://developers.google.com/games/services/common/concepts/leaderboardsLeaderboards can be a fun way to drive competition among your players, both for your most hardcore fans (who will be fighting for the top spot in a public lead原创 2020-07-20 14:44:12 · 2432 阅读 · 0 评论 -
实例分析Facebook激励视频广告接入
一,前期基础知识储备1).Facebook Audience Network新手入门使用 Facebook Audience Network,您的 Android 应用可以通过展示 Facebook 广告实现创收。以下是文档位置https://developers.facebook.com/docs/audience-network/get-started/android/?translation(需翻墙)2).测试 Audience Network 的实施情况请在推送至生产环境之前..原创 2020-07-17 11:38:11 · 18698 阅读 · 2 评论 -
实例:利用友盟崩溃统计+mapping.txt文件定位项目的错误
一,前期基础知识储备1)什么是mapping文件;mapping文件就是在对代码混淆以后,可以用来查看混淆前和混淆后的对比文件。一般用来查看线上的bug;2)mapping文件在哪看;在项目的build -> outputs-> mapping-> release-> mapping.txt3)友盟提示的崩溃错误信息;二,实例解决从上面的那个错误,我们知道是在PaintActivity中出错,但是出错的方法已经混淆,和行号已经看不出了,所以需...原创 2020-05-09 18:55:35 · 1045 阅读 · 0 评论 -
实际开发项目中使用 LeakCanary-快速检测应用的内存泄漏问题
一,前期基础知识储备关于内存泄漏一些基础点可以参考笔者之前的文章《Android中内存泄漏超级精炼详解》补充一些说明:《LeakCanary:检测所有的内存泄露》我们曾看错了方向bitmap的大小并不是问题,当内存将要用完的时候,OOM可以随处发生。它们更多的发生在你创建一个像Bitmap这种比较大的对象的情况下。OOM只是一个症状源自于更深层次的问题:内存泄露。什么是内存...原创 2020-03-27 10:28:03 · 579 阅读 · 1 评论 -
2020 二月杂记 API24之上保存分享功能;鸿洋万能适配器+构造基类;AsyncTask最正确写法,防止内存泄漏。
一,前期基础知识储备二月中旬返工,一切平安。感恩!复工后梳理一下最近的一些东西,做成一个记录:1)API24之上的保存分享,谷歌弃用了此前的很多的存储API,这里拿一个项目里使用的做示例使用;另外就是面向API24的智能终端(现在几乎没有低于24的了吧),分享功能得依靠fileprovider来实现。2)RecyclerView万能适配器的使用,这里使用的不是此前博客里的那个,而是...原创 2020-02-28 11:46:28 · 596 阅读 · 0 评论 -
用gradle打包方式打Bundle正式包
一,前期基础知识储备以下是利用Android Studio打Bundle包的方式:那么,利用gradle打Bundle包的方式呢?二,具体实现1)gradle中配置打包签名信息android { signingConfigs { releaseConfig { keyAlias 'xxxxxx' keyPassword 'xxxxxx' store...原创 2020-01-02 11:56:17 · 8247 阅读 · 1 评论 -
11月杂记(二)——SVG解析,RecyclerView删除列表,List统计+去重,RGB与HSB互转,获取图片像素RGB与图片主颜色
一,前期基础知识储备11月下旬已经走了一大半了,因为本月事情较多,还未来得及记录。这两天整理了一下过去一个月不完全懂的东西,分为两部分杂记,此为第二篇。《11月杂记(一)——String拼接,Json读写,Xml读写,Hashmap使用,File存储》《11月杂记(二)——SVG解析,RecyclerView删除列表,List统计+去重,RGB与HSB互转,获取图片像素RGB与图片主颜...原创 2019-11-29 10:52:22 · 604 阅读 · 0 评论 -
11月杂记(一)——String拼接,Json读写,Xml读写,Hashmap使用,File存储
一,前期基础知识储备11月下旬已经走了一大半了,因为本月事情较多,还未来得及记录。这两天整理了一下过去一个月不完全懂的东西,分为两部分杂记,此为第一篇。《11月杂记(一)——String拼接,Json读写,Xml读写,Hashmap使用,File存储》《11月杂记(二)——SVG解析,RecyclerView删除列表,List统计+去重,RGB与HSB互转,获取图片像素RGB与图片主颜...原创 2019-11-28 11:50:48 · 445 阅读 · 1 评论 -
多分辨率适配终结者之约束布局ConstraintLayout,我佛了
一,前期基础知识储备大屏,全面屏时代到来,屏幕适配从未显得如此重要。如图,一个简单的付费界面,如果完全按照上图的标注来写,那么在传统16:9的手机上表现良好,但在大屏手机上表现就差强人意,无论使用相对布局还是线性布局,都无法做到完整的适配。在正式项目中,就采用了一个笨办法:根据分辨率比例,使用不同的布局: View view; if (mScreen...原创 2019-10-16 18:58:04 · 1546 阅读 · 1 评论 -
Android Scroll滑动效果精炼详解第(一)课:基础理论和简单实现
一、前期基础知识储备Scroll英文释义:滑动效果(1)Scroller类:上官方代码:This class encapsulates scrolling. You can use scrollers (Scroller or OverScroller) to collect the data you need to produce a scrolling animation—for ...原创 2018-04-01 14:31:29 · 631 阅读 · 0 评论 -
Android多线程编程和线程池
一、前期基础知识储备1)线程概念线程在Android中是一个很重要的概念,从用途上来说,线程分为主线程和子 线程,主线程主要处理和界面UI相关的事,而子线程则往往用于执行耗时操作。由于Android的特性,如果在主线程中执行耗时操作那么就会导致程序无法及时响应,因此耗时操作必须放在子线程中去执行。除了主线程之外的线程都是子线程。2)扮演线程的角色有哪些除了普通线程Thread之...原创 2018-12-16 17:08:56 · 2553 阅读 · 0 评论 -
有趣的自定义View — 小米MIUI10相机·滑动功能指示器
小米MIUI10相机功能滑动指示器效果如下: 可以看到2018年新出来的旗舰机,包括OPPO ViVo等,相机的交互都改为了左右滑动调整相机功能。(其实都是仿iOS相机)如下图所示:一、效果要求1)短视频、视频、拍照、人像、正方形、全景、手动一个七个滑动指示器摆放到一起;2)手指在屏幕上左右滑动时,滑动指示器也跟随手指左右滑动;3)手指抬起时,滑动指示器停止滑动,...原创 2018-12-22 12:10:50 · 1763 阅读 · 3 评论 -
Android中的缓存策略—拉取网络图片,缓存本地
一、前期基础知识储备缓存策略在Android中有着广泛的使用场景,尤其在图片加载这个场景下,缓存策略更是尤为重要。加载图片是消耗流量的,如果用户加载图片,每次都要从网络中拉取,不但耗费更好的流量,同时加载速度也不是每次都可以接受的。如何避免过多的流量消耗呢?那就是Android中的缓存了。当程序第一次从网络中加载图片之后,就将其缓存在存储设备上,这样下次使用这张图片就不用再从网络上获取...原创 2019-03-23 11:52:06 · 2789 阅读 · 4 评论 -
Android应用架构设计—MVP模式
一、前期基础知识储备随着Android这一移动开发技术的成熟,Android应用架构设计得到了越来越多企业以及开发者的重视,并因此衍生出了Android架构师这一职位。好的架构设计会带来很多好处,比如更易维护、扩展,等等;而差的架构设计或者没有架构设计,则会使得应用在后期的维护和扩展中产生很多严重的问题。目前Android的框架模式主要有MVC、MVP和MVVM,虽说最近流行MVP和MVVM,...原创 2019-03-23 15:33:42 · 1188 阅读 · 0 评论 -
彻底变换PreferenceFragment样式和全局设置字体样式的解决方案
一、PreferenceFragment样式修改 新样式直接上图,原样式为白色样式,即为PreferenceFragment的默认样式:① 白底黑字;② SwitchPreference开关默认为蓝色;③ ListPreference列表默认为白色,选中状态为蓝色;④ 每个设置选项标题颜色为蓝色下图为新样式,彻底变换:① 黑底白色; ② SwitchP...原创 2019-04-27 15:44:18 · 2904 阅读 · 0 评论 -
RecyclerView双列表联动
双列表联动效果如下:以上,是博主根据鸿洋大神的玩Android开放的API做的一个客户端,其中导航界面使用了双列表联动来展示数据。一、前期基础知识储备1.使用强大的开源项目BRVAH装载两个列表的数据,简单易用,强烈推荐使用;2.RecyclerView的滚动事件OnScrollListener研究 - 监听列表滚动状态的接口为 RecyclerView.OnScrollLis...原创 2019-05-27 13:39:10 · 6094 阅读 · 3 评论 -
Android中以NDK方式使用C++原生代码及一些相关错误
一、前期基础知识储备Android NDK 是一套允许您使用 C 和 C++ 等语言,以原生代码实现部分应用功能的工具集。在开发某些类型的应用时,这有助于您重复使用以这些语言编写的代码库(C++等语言在执行速度、稳定性、安全性上有很大的优势)。public class MyActivity extends Activity { /** * Native method implem...原创 2019-06-11 10:21:55 · 1621 阅读 · 1 评论 -
使用Cmake编译原生代码生成对应SO,以OpenCV为例
一、前期基础知识储备①首先 利用AS创建含原生代码的项目时,它本身都编译不过,是的编译不过,报的错就是下面这个。报错:CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to selec...原创 2019-07-19 18:20:27 · 3027 阅读 · 2 评论 -
开发中使用到的Intent知识扩展
一. 前期基础知识储备 数据序列化在Android开发中占据举足轻重的地位,无论进程间通信,本地数据化存储,网络数据传输等,都离不开序列化的支持。针对不同场景选择正确的序列化方案,对应用的性能有着极大的影响,而Intent对象就是序列化数据的载体之一。二.上代码,具体实现下面是一些和Intent有关的知识汇总:1)makeMainActivity()| make...原创 2019-08-18 15:09:51 · 957 阅读 · 0 评论 -
BottomSheets + BaseQuickAdapter -> 知乎评论 + 云村歌单
一、前期基础知识储备Android Support Library 23.2里的 Design Support Library新加了一个Bottom Sheets控件,Bottom Sheets顾名思义就是底部操作控件,用于在屏幕底部创建一个可滑动关闭的视图,可以替代对话框和菜单。其中包含BottomSheets、BottomSheetDialog和BottomSheetDialogFragm...原创 2019-08-30 11:34:48 · 320 阅读 · 0 评论 -
依赖注入框架-Dagger2 精炼详解
一、前期基础知识储备1)依赖注入是什么?依赖注入是面向对象编程的一种设计模式,其目的是为了降低程序耦合,这个耦合就是类之间的依赖引起的。我们使用各种依赖注入框架比如View注入框架Butternife,Koltin注入框架kodein,更加简易的RoboGuice注入框架等等,都是为了降低类与类之间的耦合。实现依赖注入的方法通常有三种:①构造方法注入;②定义set方法注入;③注解注入。...原创 2019-09-05 15:01:58 · 706 阅读 · 0 评论 -
RxJava 2.0版本使用精炼详解
一,前期基础知识储备笔者之前写过两篇关于RxJava1.0的文章《RxJava理论讲解和简单实现》《RxJava常见操作符讲解》,感兴趣的读者可以看一看。里面有有关RxJava异步操作库的详细介绍,本文不再赘述。RxJava1.0版本添加依赖: implementation 'io.reactivex:rxandroid:1.2.1' implementatio...原创 2019-09-08 17:20:57 · 662 阅读 · 0 评论 -
Android组件化架构
一,前期基础知识储备组件化是什么?组件化的定义是什么?组件化是什么时候形成的?在项目开发中,一般会将公用的代码提取出来用于制作基础库Base module,将某些单独的功能封装到Library module中,根据业务来划分module,组内的每个人分别开发各自的模块,如下图所示:项目初始架构图随着事件的推移,项目迭代的功能越来越多。扩展了一些业务模块之后,互相调用的情况就会增多,对某...原创 2019-09-14 15:04:10 · 671 阅读 · 0 评论 -
使用Tensorflow实现图片风格迁移,圆梦名画
一,前期基础知识储备1)Prisma — 图片风格迁移的鼻祖:照片可以记录生活的瞬间,变成一幅幅的回忆;而Prisma则是可以让瞬间的回忆变成永恒的名画!我们平常用手机随意拍出来的照片效果看起来都很普通,而通过 Prisma 处理之后,你一定会惊叹于它的神奇!Pisma是一款来自俄罗斯的照片美化应用,和「彩云天气」那样,借助人工智能技术将自身的能力提升到另一个层次。“P...原创 2019-09-20 18:31:20 · 2549 阅读 · 1 评论 -
人脸识别——使用谷歌Firebase-ML Kit实现
一,前期基础知识储备1)Firebae是什么?由 Google 提供支持,基于 Google 基础架构而构建,可以自动扩缩的全面移动开发平台。官网地址:https://firebase.google.com/2)ML Kit是什么?Firebase提供的面向移动开发者的机器学习产品。官网地址:https://firebase.google.com/products/ml-k...原创 2019-09-26 11:37:06 · 6107 阅读 · 1 评论 -
事件总线设计——EventBus3.0精炼详解
一、前期基础知识储备为了简化并且更加高质量的地在Activity、Fragment、Service和Thread等之间的通信,同时解决组件之间高耦合的同时仍能继续高效地通信,事件总线设计出现了。可用于替代Intent、Handler、BroadCast进行消息传递。EventBus是一款针对Android优化的发布-订阅事件总线。它简化了应用程序内各组件间、组件与后台线程间的通信。其优...原创 2018-12-15 14:57:31 · 1928 阅读 · 0 评论 -
Android刘海屏适配精炼详解
一、前期基础知识储备话不多说,这么多刘海屏手机今年集中爆发,所以尽管刘海屏不好看,但是还是要适配。2017年苹果X开启了刘海屏时代,2018年集中爆发,纷纷采取刘海屏这一策略来实现全面屏的概念(看36氪中的新闻,明年是5G元年,同时三星推出了折叠屏,未来的手机主流趋势是否会发生改变暂不得而知,但刘海屏不会退出市场,淡出视野这一点是确定的),所以Android手机对于刘海屏的适配也是比较...原创 2018-11-11 12:49:54 · 4711 阅读 · 0 评论 -
什么情况导致OOM问题及如何优化
一、前期基础知识储备(1)OOM定义—out of memory,内存溢出,一个程序中,已经不需要使用某个对象,但是因为仍然有引用指向它垃圾回收器就无法回收它,当该对象占用的内存无法被回收时,就容易造成内存泄露。多个内存泄漏最终会导致内存溢出,即OOM。(内存泄漏和内存溢出两者之间的关系,可参考笔者之前的文章《Android中内存泄漏详解》)(2)Java内存概念、内存泄漏相关知识点都可以参考笔者...原创 2018-03-27 17:26:36 · 6128 阅读 · 0 评论 -
DiskLruCache、LruCache和Valley三级缓存精炼详解
一、前期基础知识储备在前面的两篇文章《LruCache内存缓存图片技术精炼详解》、《DiskLruCache本地缓存图片技术精炼详解》笔者分别讲解了利用LruCache实现内存缓存和利用DiskLruCache本地缓存两种缓存技术,那么今天本节文章,就和大家一起实现一次三级缓存加载图片。(1)三级缓存的定义现在大部分的缓存框架,比如图片加载框架,网络请求框架等都使用三级缓存来提高效率,即内存-文件...原创 2018-04-09 21:53:49 · 296 阅读 · 0 评论 -
DiskLruCache本地缓存图片技术精炼详解
一、前期基础知识储备上一篇文章《LruCache内存缓存图片技术精炼详解》中,笔者分析了利用LruCache类实现图片的内存缓存,在应用程序中,如果已经联网加载好了图片,那么把图片保存到内存中,下一次加载就会十分迅速。但是,内存缓存技术,也有缺点,如果图片从内存里被移除了的话,那么下一次加载仍然是要从网络中获取,那么有没有什么办法可以做到一个“中间状态”,既不用每次从网络加载,又不用担心内存不足的...原创 2018-04-09 21:18:41 · 387 阅读 · 0 评论