自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 日常工作中常用的几个git指令

前言组内分享基础概念git有三个分区,分别是:工作区(Working Directory):开发者直接编辑的地方,只要文件发生了更改,在这就会显示出来,包含追踪与未追踪文件。通过git add将工作区文件添加到暂存区。暂存区(Stage | Index):数据暂时存放的区域,通过git commit将暂存区文件添加到本地版本库。本地版本库(Local Commit History):存放所有已经提交的数据,通过git push推送到远程仓库。基础命令git status查看工作区状态

2021-12-02 15:14:46 553

原创 OkHttp源码解析(很细 很长)

使用方法使用方法十分简单,分别创建一个OkHttpClient对象,一个Request对象,然后利用他们创建一个Call对象,最后调用同步请求execute()方法或者异步请求enqueue()方法来拿到Response。 private final OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://github.com/") .b

2021-11-22 16:34:11 3580

原创 EventBus 源码解析

使用方法使用方法很简单,按照官方文档介绍,分为三个步骤。步骤1:定义事件public static class MessageEvent { }步骤2:准备订阅者定义订阅方法,来处理收到的事件。@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) {/* Do something */};并在Activity、Fragment中按照其生命周期进行注册与注销。 @O

2021-11-05 16:47:11 474

原创 【面试 反思】Retrofit源码与设计 7 连问

Retrofit 采用 RESTful 风格,本质上只是对 OkHttp 进行封装,今天我们根据几个问题来进一步学习一下 Retrofit的源码与设计思想。

2021-12-21 16:47:41 2482

原创 如何在Adapter中正确的使用Context

前言最近我在项目中,发现一个同事写 RecyclerView.Adapter 的时候都习惯定义一个全局的私有 mContext,然后在 onCreateViewHolder(parent: ViewGroup, viewType: Int) 方法中进行赋值操作 mContext = parent.context。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wzo0BlR5-1611468169753)(#pic_center)]第一次见到这样的写法,三种方式

2021-01-31 23:47:21 1989 7

原创 Android Volatile 关键字学习

面试官:你平时是怎么创建单例的?我:我一般用DCL双重检锁的方式来创建单例,然后为 instance 加上 volatile 修饰,防止 DCL 失效。面试官:那你可以具体说说 volatile 吗?我:行!前言相信很多 Andorid程序员跟我一样,最开始接触到 volatile 这个关键字是在创建单例的时候,如:public class SingleTon { //为了防止出现 DCL失效问题,加上 volatile 关键字 private static volatile.

2020-12-08 16:51:43 961

原创 Android Synchronized 关键字学习

面试官:能说说Synchronized的作用吗?答:Synchronized 使用于多线程并发环境下,确保线程间互斥的访问同步代码;确保线程间的共享变量的可见性;还是避免重排序导致的问题。1. 多线程知识点回顾Java 并发的5条特性2. Synchronized 的使用方法2.1 修饰普通方法2.2 修饰静态方法2.3 修饰代码块...

2020-11-24 23:56:16 513 5

原创 Flutter 案例 实现 Wanandorid 客户端

本文分享利用Flutter实现 Wanandroid 客户端

2020-10-01 22:22:32 279 1

原创 Android Xml解析

1. 什么是XMLXML (Extensible markup language): XML是一种标记语言,用于存储与传输数据。是常用的数据传输方式,区分大小写,文件扩展名为.xml。XML定义了一组用于以人类可读和机器可读的格式编码文档的规则。XML的设计目标集中在Internet的简单性,通用性和可用性上。它是一种文本数据格式,并通过Unicode对不同的人类语言提供了强大的支持,被W3C所推荐。例如:<?xml version="1.0" encoding="utf-8"?>&

2020-07-31 20:13:17 3352

原创 Android刘海屏适配

代码生涯的第一个开源库,NotchAdapter 欢迎大家点评 Star1.前言自从2017年 iphone X 问世,刘海屏幕(Notch Screen)也开始流行。但是正如上图官方文档所介绍的,Android 官方是从 Android P (Android 9 API 28)开始才正式开始支持刘海屏幕的适配。也就造成了 “上面老大哥还没定好统一的规章制度,下面各个小弟已经开始各行其道了”的形象。所以针对 Android 手机刘海屏的适配方案,我们需要分为Android 9及以上与Androi.

2020-06-28 23:33:23 3940

原创 升级gradle 4.0.0 出现Unable to find method org.gradle.api.tasks.TaskInputs.file

今日将Android Studio 升级到了4.0,同时也将 Gradle 升级到了 4.0.0。项目配置如下:project 下的 build.gradledependencies { classpath 'com.android.tools.build:gradle:4.0.0' //升级到了4.0.0 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.gr

2020-06-15 17:09:34 2060 2

原创 Android 设计模式之代理模式

本文是自己关于代理模式的一篇学习笔记,参考于 Android 源码设计模式解析与实战文章目录1. 定义1.1 代理模式的UML类图1.1.1 代理模式的代码结构2. 代理模式的简单实现2.1 具体代码1. 定义当我们无法或不想直接访问某个对象或访问某个对象存在困难的时候,我们可以通过委托代理一个对象来间接访问,所以代理模式也称为委托模式。1.1 代理模式的UML类图Subject: 抽象主题类, 用于声明真实主题与代理主题的共同接口方法,可以是一个抽象类也可以是一个接口。RealSubj.

2020-05-31 23:11:34 430

原创 GreenDao实现一个本地论坛

前言:4月,换了工作,要适应新的工作新的环境,也比之前忙碌,立下的每个月至少一篇Blog,现转眼就到了4月份的最后一刻,但就是不知道写点什么好,但是还是想着要达成这个Flag。划个水了。关于 Android 数据库,之前项目接触的都是 SQLite 与 Room DB,上次面试被问有没有用过 GreenDao?回答:没有!这次就记录一下近期关于 GreenDao 的学习实践,利用 Gree...

2020-04-30 23:35:38 302

原创 Android 网络请求是选择Retrofit + RxJava2 还是 Retrofit + Callback?

文章目录1.前言2.实例2.1 Retrofit + Callback2.2 Retrofit + RxJava23.总结1.前言在我们的App中,肯定需要通过网络请求从后台服务器获取一些数据,这时就需要用到网络请求框架,当下最流行的网络框架应当就是 Retrofit 网络框架了,我在实际项目中也都是使用 Retrofit,是采用 Retrofit + Callback的形式。我还以为大家都是...

2020-03-24 22:11:01 423 2

原创 我一次性为 Wanandroid 开发了Java与Kotlin两个版本

目录1. 介绍1.1 功能效果图展示1.2 项目设计模式2. 代码解析1. 介绍最近基于 Wanandroid开放API 开发了一款十分简单的APP,, 采用 Androidx + MVVM + Retrofit + dataBinding 的模式进行开发。App的主要功能是就是浏览各类 Android 文章,效果图如下所示:1.1 功能效果图展示1.2 项目设计模式该项目采用 M...

2020-03-21 13:59:21 513 3

原创 Android IntentService详解(源码分析)

1. 前言1.1 定义2.使用方法3.源码分析

2020-02-01 14:17:24 1846 1

原创 Android HandlerThread详解(源码分析)

1. 前言本篇文章是对 Android HandlerThread 类的学习,通过简单的例子,及分析源码来深入学习。同时例子将以 Java && Kotlin 两种代码形式展示。1.1 定义HandlerThread: 一个拥有 Looper 对象的线程。继承于 Thread 类,并拥有一个 Looper 对象,可以利用该 Looper 对象来创建 Handler 对象...

2020-01-28 22:39:19 478

原创 Android AsyncTask深入学习(源码分析)

之前有写过一篇博客,关于Android AsyncTask使用方法 AsyncTask 的使用方法,想着不能又是知其然不知其所以然的状态,本篇文章是对 AsyncTask 的深入学习。目录:AsyncTask 是一种轻量级的任务异步类,可以在后台子线程执行任务,且将执行进度及执行结果传递给 UI 线程。1. AsyncTask 官方文档介绍AsyncTask 的官方文档中有很详细的介...

2020-01-19 23:48:49 247

原创 Android Messenger初探

1. 背景最近在看任玉刚老师的《Android开发艺术探索》,看到了 Messenger,觉得挺有意思的,写个 Demo 练习一下,同时根据 Messenger 可以延伸到其他知识点,比如Android的Binder通信机制,AIDL等知识点,本文算是 Messenger 初探。1.1 Messenger 介绍首先肯定要看一下官方对于 Messenger 的介绍。/** * 引用 H...

2020-01-11 16:23:48 509

原创 Android Handler深入学习(源码分析)

1. 背景1.1 Message定义:Message 是包含着描述信息及任意数据对象的可发送到 Handler 的信息。/** * 定义包含着描述信息及任意数据对象的可发送到 Handler 的信息。额外包含可以不被分配的两个 * int 字段及一个 对象字段。获取Message最好的方法是调用 Message.obtain() 或 调用 * Handler.obtainMess...

2020-01-05 21:00:08 775

原创 Android Handler使用方法

1. 定义Handler:子线程与主线程之间的沟通中介,用于传递消息。在 Android 中,为保证 UI 工作的线程稳定安全,规定只有主线程才能做 UI 的更新工作,在开发中,我们的 app 经常需要做一些网络请求的工作,从服务器拿取数据,然后将数据进行一些处理操作,最后通过 UI 呈现给用户。像这种耗时的操作,我们会额外先创建一个线程来处理,处理完成后,通知主线程作出相应的 UI 变...

2019-12-24 23:37:02 742

原创 Android 如何正确的重写 onDestroy() 方法

不知道大家在写 Android 的时候有没有遇到过这样的一个疑惑:当你在重写 onDestry() 的方法时,有没有犹豫过,我们自己的方法,是应该放在 super.onDestroy() 方法的上面呢?还是应该放在 super.onDestroy() 方法的下面呢?如下所示:@Overrideprotected void onDestroy() { //是将我们的方法放在这呢? ...

2019-11-27 22:17:23 10904 1

原创 Android Serializable及Parcelable使用方法

Android Serializable 及 Parcelable 使用方法#什么是序列化当我们需要在多个 Activity 之间传递对象时,我们不能直接传递对象的引用,我们应该对对象进行序列化,将对象转换成可传输的状态,然后放到 Intent 中进行传递。#SerializableSerailizable 是 Java 的一个接口,很容易实现,Java 在一定的条件下会自动帮我们去序列...

2019-11-24 10:39:43 325

原创 Android Studio常用的快捷键(Mac)

最近一个月都是用自己的笔记本开发,没有外设键盘与鼠标,这时候越发觉得 Android Studio 快捷键的方便之处,抽空总结了一下我自己常用的几个快捷键,分享给大家。关于搜索查看的快捷键 搜索当前类中的内容 cmd + F 搜索所有类中的内容(全局搜索) cmd + option + F...

2019-11-20 22:03:34 397

原创 Android SQLite 使用方法(含完整案例)

目录1.Demo展示2. 实现方法2.1 定义数据库的结构2.2 使用SQLiteHelper来创建数据库3. 注意事项1.Demo展示Demo 案例:实现联系人列表功能,我们可以增加联系人,修改联系人,删除联系人,以及根据联系人的名字查询该联系人的功能,如下图所示:增加联系人查询联系人修改联系人删除联系人2. 实现方法app 的结...

2019-10-27 22:18:19 6574

原创 Git笔记:将特定的单个提交合并到指定的分支上 (git cherry-pick)

背景:挑选特定的 commit 提交合并到指定分支在实际的开发过程中,我们通常会有 develop 开发分支(来保持最新的代码更新),以及 release 版本分支(对应我们 App Store 上线的版本,比如:版本 V1.0),产品上线后我们就马上继续为下一轮的功能做开发,也就是会继续更新 develop 分支。在产品上线后的几天后,你还在乐此不疲的开发新需求时,客户反映在上线的 ...

2019-09-14 22:46:45 975

原创 Android 多线程之线程池学习

目录1. Executor 是什么2. ExecutorService 是什么3.Executors 是什么4. ThreadPoolExecutor 是什么1. Executor 是什么package java.util.concurrent;public interface Executor { void execute(Runnable var1);...

2019-09-13 17:51:30 333

原创 Android AsyncTask使用方法(防止内存泄露)

目录1.定义1.1 AsyncTask 的三个泛形参数1.2 AsyncTask的4个核心方法1.3 取消任务2. 简单Demo上手2.1 Java 版本2.2 Kotlin 版本3. AsyncTask 如何防止内存泄露1.定义官方解释:AsyncTask可以正确及方便地使用UI线程。此类允许您执行后台操作并在UI线程上发布结果,而无需通过操作Thre...

2019-09-07 14:03:51 1053

原创 Android 多线程学习

目录1. 什么是进程,什么是线程,两者有何区别2. 线程生命周期2.1 Android 主线程与子线程概念理解3. Java 多线程实例Demo3.1 继承Thread3.2 实现Runnable接口4. Android 多线程实现4.1 Handler实现4.2 HandlerThread实现4.3 AsyncTask实现4.4 IntentServi...

2019-08-31 14:06:08 259

原创 Android MVC MVP MVVM简单例子

目录1. MVC MVP MVVM 间的区别1.1 MVC(Model-View-Controller)1.2 MVP(Model-View-Presenter)1.3 MVVM(Model-View-ViewModel)2. 例子Demo2.1MVC2.2MVP2.3MVVM1. MVC MVP MVVM 间的区别三者的区别如下图所示:1.1...

2019-08-24 23:26:14 3092 7

原创 Android Broadcast & BroadcastReceiver学习

目录1. 什么是Broadcast &BroadcastReceiver1.1 Broadcast是什么?有什么作用?1.2 BroadcastReceiver是什么?什么作用?2.Broadcast的类型2.1标准广播2.2有序广播2.3 本地广播3. BroadcastReceiver的注册方式3.1 静态注册3.2 动态注册4. ...

2019-08-10 19:36:43 304

原创 Android Service & IntentService学习总结

目录1. Service介绍1.1 Service是什么,有什么作用2. Service生命周期3. 自定义Service例子3.1 观察Service生命周期3.2 绑定Service例子3.3 startService 与 bindService 的区别4. IntentService4.1 IntentService是什么4.2 IntentServi...

2019-08-05 20:17:46 447

原创 Android Intent详解

参考文献:https://developer.android.com/reference/android/content/Intent#developer-guides https://developer.android.com/guide/components/intents-filters.html#Receiving目录1.Intent是什么...

2019-07-27 14:50:20 361

原创 Git笔记:撤销本地提交 & 恢复远程仓库提交

目录1.撤销还没有推送到remote仓库的提交1.1完全撤销-舍弃你的全部改动,销毁提交1.1.1撤销提交后又想恢复刚刚销毁的提交1.2 撤销-但保留你的改动1.3 最安全轻微的撤销2.撤销已经推送到remote仓库的提交2.1 利用git revert来撤销远程提交本篇文章主要记录git reset 及 git revert 的使用方法。1.撤销...

2019-07-19 00:09:40 7849

原创 关于Android开发者必须知道的知识点(一)

今天突发奇想的想总结一下我个人认为,作为一个Android开发者必须知道的知识点。目录1. Context1.1 context是什么?1.2 context的作用是什么?1.3getContext().getBaseContext().getApplicationContext()以及this的作用和区别1.3.1 getApplicationContext()...

2019-07-16 23:54:15 393

原创 Android 设计模式之抽象工厂模式

前言:简单工厂模式:https://blog.csdn.net/jerechen/article/details/94064600工厂方法模式:https://blog.csdn.net/jerechen/article/details/94229028目录1. 定义2.抽象工厂模式的实践Demo1. 定义抽象工厂模式就是创建一个超级工厂来创建各类工厂,这个...

2019-07-08 21:03:51 398

原创 Android 设计模式之工厂方法模式

关于简单工厂模式请上篇博客:https://blog.csdn.net/jerechen/article/details/94064600目录1. 定义1.1什么是工厂方法模式?1.2与简单工厂模式有什么不同?1.3 什么时候用工厂方法模式2. 工厂方法模式实践案例Demo3. 工厂方法模式的优缺点1. 定义1.1什么是工厂方法模式?定义一个创建产品对...

2019-06-29 23:57:10 730

原创 Android 设计模式之简单工厂模式

目录1. 工厂模式定义2.什么时候用工厂模式3. 简单工厂模式实践案例Demo4.简单工厂模式的优缺点4.1 优点4.2 缺点1. 工厂模式定义什么是工厂设计模式?: 根据名字解析“工厂模式”, 首先工厂是用来用来生产产品的,而且所生产的产品都是工人们根据仓库中现有的很多材料加工出来的。以玩具工厂为例,这个玩具工厂可以生产出上百种玩具,工人们...

2019-06-28 23:43:17 548

原创 Android 设计模式之单例模式

目录1. 单例的定义2. 使用单例模式的目的3. 单例的几种创建方式3.1 单线程中运行单例3.2 多线程中的单例3.2.1 synchronized作用4. 测试5. Android Studio 快速创建SingleTon类6. 单例模式在项目中运用是好是坏1. 单例的定义保证此类只有一个自己创建的实例对象存在,并且提供全局访问该实例对象的方法。...

2019-06-24 23:55:34 350

原创 Android 设计模式之观察者模式

目录1. 介绍1.1 定义1.2 作用1.3 优缺点2. 实践案例Demo2.1 利用Java内置的Observer/Observable2.1.1 实现方式2.2 自定义观察者/被观察者2.2.1 具体实现方式3.Android中包含观察者模式的组件源代码解析3.1 ListView中观察者模式解析4. 观察者模式与发布者/订阅者模式的区别1...

2019-06-20 00:15:44 843

空空如也

空空如也

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

TA关注的人

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