自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HoukHan的博客

一个开心快乐的程序猿

  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android 各个版本以及新特性

Android发行版本Android 各代版本 LogoAndroid在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。作为每个版...

2018-08-23 09:23:23 19122 1

转载 第一次使用Android Studio时你应该知道的一切配置

转载  https://blog.csdn.net/Android_yyx/article/details/76290850?locationNum=7&fps=1【开发环境】物理机版本:Win7旗舰版(64位)Android Studio版本:2.1正式版【Android Studio的优势】基于Gradle的构建支持Android特定重构和快速修复更加丰富的模板代码,让创建程序更简单提...

2018-07-10 11:41:09 322

转载 Flutter2.0 强大的空安全

简介空安全(Sound null safety)是 Dart 2.12 中新增的一项特性,空安全特性并不是 Dart 独有的,Kotlin, TypeScript, C#, Swift 等语言都有此特性,如果你了解这些语言的空安全特性及用法,那么下面关于 Dart 语言空安全特性的介绍你会感到非常熟悉,因为 Dart 语言空安全和其他语言基本一致。版本要求Dart 2.12和Flutter 2中提供了空安全性,对应到Flutter项目中,则需要在pubspec.yaml文件中添加如下配置:.

2021-08-02 10:27:52 836

转载 为了性能,Glide 做了哪些优化?

前言Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客。但是Glide的源码内容比较多,想要学习它的源码往往千头万绪,一时抓不住重点。本文以Glide做了哪些优化为切入点,介绍与学习Glide的源码与原理,如果对您有所帮助,欢迎点赞。Glide做了哪些优化?要想要回答这个问题,我们可以先想一想,如果我们自己要实现一个图片加载框架,我们会思考什么问题?1.图片下载是个耗时过

2021-08-02 09:39:50 665

原创 ADB 查看 Log日志的几种方式

1.通过PID查看日志adb 查看所有进程信息adb shell psadb 查看指定关键字的进程信息 *** 为关键字 可以为包名adb shell “ps | grep ***”adb 查看所有进程的 log信息adb logcat -v processadb 查看指定PID的log信息adb logcat -v process | grep ****2.通过关键字直接查看查看所有的log日志adb logcat过滤查看指定关键字的log ***为关键字adb logca

2021-07-21 10:25:47 19969 1

转载 Flutter 基础知识

1.继承 extendsFlutter 中的继承是单继承。子类可以通过@override 来重写父类方法构造函数不能被继承没有共有和私有访问符,可以直接访问超类中所有变量和方法一般情况下,带下划线属性表示私有变量2.接口实现(implements)没有(interface)关键字,但每一个类都是一个隐式的接口。class 就是 interface当class被当做interface用时,class中的方法就是接口的方法,需要在子类里重新实现,在子类实现的时候要加@override当

2021-07-19 14:03:24 632

转载 JVM区域划分以及那些区域可能产生OOM(out of memory)

通常情况下,我们可以把 JVM 的内存区域划分为以下几个部分,其中,有的区域是以线程作为单位,而有的区域则是整个 JVM 进程唯一的:1.程序计数器在 JVM规范中,每个线程都有自己的程序计数器,并且任何时间一个线程只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的java 方法的 JVM 指令的地址;但是,如果正在执行的是本地方法,则未指定值。2.Java 虚拟机栈虚拟机栈,早期也被称之为 Java 栈。每个线程在被创建时,都会创建一个虚拟机栈,其内部保存了一个.

2021-07-16 09:58:54 732 2

原创 Java中Volatile关键字的爱恨情仇

一、简介二、并发编程的3个基本概念三、锁的互斥和可见性四、Java的内存模型JMM以及共享变量的可见性五、volatile变量的特性六、volatile不适用的场景七、volatile原理八、单例模式的双重锁为什么要加volatile一、简介...

2021-07-05 14:54:21 87

原创 Java中Synchronized关键字的爱恨情仇

Synchronized直译为同步的意思,常在代码中用于解决多线程的并发问题。它是一种同步锁,可以确保线程互斥的访问同步代码。Java中每一个对象都可以作为锁,这是synchronized实现同步的基础普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。一...

2021-06-30 17:44:31 92 2

原创 Java中Static关键字的爱恨情仇

Static直译为静态的意思,开发中常用static final 修饰常量以及单例模式模式中也常常会使用到static来让可以更方便的通过类名直接调用到。

2021-06-29 09:43:55 235 2

转载 Java集合中List,Set以及Map等集合体系详解(史上最全)

转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全)

2021-06-17 09:49:32 77

原创 kotlin基础-数据类型

基本数据类型 数组 字符串 容器

2021-06-01 10:53:49 303 3

转载 Dart核心语言基础const关键字与final关键字的区别

题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧本文描述 Dart 中 const 关键字与 final 关键字的基本使用知识点以及对比区别1 const 、final 使用场景1.1 finalfinal 用来修饰变量 只能被赋值一次,在运行时赋值,所谓运行时 就是当程序执行到这块代码时才会对final 修饰的变量进行赋值。应用场景一如下图所示,当 final 使用在类中时,在声明变量时,你必须对其初始化赋值当 final 运用在 Stateful

2020-09-04 09:20:44 278

原创 Activity生命周期

生命周期图正常情况正常情况下,Activity会走如上图的生命周期。下面是对每个生命周期的简介。onCreateonCreate:表示Activity正在被创建,这是生命周期的第一个方法,在这个方法中,我们可以做一些初始化的操作。可以进行的操作:比如调用setContentView去加载页面布局资源,初始化Activity的数据,注意的是虽然在onStart()中实现findviewbyid也可行,但我认为这没有必要,因为每次调用onStart()都会重新实例化view、控件。一些特殊的初始化

2020-07-08 09:59:19 249

原创 Android事件分发机制

https://carsonho.blog.csdn.net/article/details/54136311?utm_source=app

2020-07-01 09:15:49 111

原创 this、super、final、static、synchronized 关键字可以修饰什么,以及修饰后的作用?

this、super、final、static、synchronized 关键字可以修饰什么,以及修饰后的作用?this关键字super关键字final关键字static关键字(静态方法--静态变量--静态块--静态内部类)synchronized关键字参考地址this关键字this关键字主要分为四种情况指的是当前对象本身当你要把自己作为参数传递给别的对象时,也可以用this有时候,我们会用到一些内部类和匿名类,如事件处理 当在匿名类中用this时,这个this则指的是匿名类或

2020-06-29 09:46:37 1273

原创 Activity的四种启动模式

3-Activity的四种启动模式任务栈Task,是一种用来放置Activity实例的容器,他是以栈的形式进行盛放,也就是所谓的先进后出,主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作更改Activity的顺序。启动一个Application的时候,系统会为它默认创建一个对应的Task,用来放置根Activity。默认启动Activity会放在同一个Task中,新启动的Activity会被压入启动它的那个Activity的栈中,并且显示它。当用户按下

2020-06-28 09:11:05 183

原创 单例模式 volatile 原子性(要么都成功,要么都失败)

2-单例模式 volatile 原子性(要么都成功,要么都失败)单例模式,顾名思义就是只有一个实例,可以分为饿汉式和懒汉式以及JDK1.5以后引入的枚举;饿汉式优点是当类在加载的时候就已经创建了实例,所以是安全的缺点是当类加载的时候就已经创建并完成了实例化,没有达到lazy-loading(延迟加载)的效果,所以如果该类始终没有用到,就会造成内存的浪费懒汉式是和懒汉式相反,这种方式实现了lazy-loading,但是有一个明显的缺点就是,这种单例只能在单线程环境下使用,在多线程环境下,一

2020-06-28 09:10:24 274

原创 Java 抽象类和接口的区别

1-java 抽象类和接口的区别抽象类是用来(继承)当做超类的(子类用来实现的),可以用public和protected修饰,可以写具体的方法可以声明各种类型的成员变量接口是用来当做只能存在public的抽象方法(JDK8以后可以有),声明成员变量是public static final 类型的(即使不屑也会是这种类型)java不支持多继承,但是支持多实现,所以换种方式来讲,接口就是换种方式(接口)来实现C++那种多继承的抽象类中的抽象方法子类可以不用全部实现,但是接口中的方法实现类必须全部

2020-06-28 09:02:54 174

原创 Java基础-基本数据类型

byte 数据类型是8位、有符号的,以二进制补码表示的整数;最小值是 -128(-2^7);最大值是 127(2^7-1);默认值是 0;byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;例子:byte a = 100,byte b = -50。

2020-03-12 17:31:49 270

原创 Dart运算符

运算符Dart支持各种运算符(有些语言翻译为运算符,有些叫操作符,都指的是Operator。),并且其中的一些操作符还能进行重载。完整的运算符(操作符)如下表:描述 运算符(操作符) 一元后缀 expr++ expr-- () [] . ?. 一元前缀 -expr !expr ~expr ++expr --expr 乘法级别 * / % ~/ 加...

2019-10-18 16:15:47 511

原创 Android ConstraintLayout(约束布局)

目录1.为什么要用ConstraintLayout 2.介绍 3.如何使用ConstraintLayout 3.1 添加依赖 3.2 相对定位 3.3 角度定位 3.4 边距 3.5 居中和偏移 3.6 尺寸约束 3.7 链 4.辅助工具 4.1 Optimizer 4.2 Barrier 4.3 Group 4.4 Placeholder 4.5.Guideli...

2019-10-17 14:27:31 670

原创 Dart的函数

函数可选参数Dart是一个面向对象的语言,即使是函数也是对象,所以函数也可以被声明成变量,或者作为另一个函数的参数。也可以像调用函数一样调用类的实例变量,这一点和Java类似(由于本人原先是做Java的,所以看语言的特性经常会以Java来类比)。同样,跟Java一样,函数的参数可分为有参和无参两种类型。以下以两种不同的代码段带大家认识以下Dart的函数。 /*判断*/...

2019-10-16 17:42:48 165

原创 Flutter中的网络请求

Flutter请求网络有两种方法,一种是Http请求,另一种是HttpClient请求1.Http请求方式使用Http方式请求网络时,需要导入Http包。如下所示import 'package:http/http.dart' as http;2.HttpClient请求方式使用HttpClient方式请求网络时,需要导入io以及convert包。如下所示import ...

2019-10-14 15:19:26 342

原创 Dart中变量以及基本数据类型

1. 常量以及固定值static类似java中的staitc,表示一个成员属于类而不是对象final类似java中的final,必须初始化,初始化后值不可变,编译时不能确定值。Flutter 官方教程中,有这么一行代码:final wordPair = WordPair.random();Final 表明这个变量不能再发生更改,但是这个初始化的值在编译时是不...

2019-10-14 13:56:30 812 6

原创 startActivityForResult()和setResult()

如果你想在Activity中得到新打开Activity关闭后返回的数据,你需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Activity传回数据,为了得到传回的数据,你必须在前面的Activity中重写onActivityResult(int reques...

2018-10-24 10:48:20 242

原创 隐式跳转的秘密

今天开始在回读郭霖大神的第一行代码,虽说是一本入门的书籍,但是里面的知识点还是有许多自己以前没有关注过的,故写下来,毕竟眼过千遍不如手过一遍。我们都知道启动一个新的活动无非就两种方式 显式启动和隐式启动显式启动:直接指定要跳转的Activity类名,不用过滤,效率高,适用于同一个应用中的不同Activity跳转隐式启动:需要过滤,相对耗时,但可以找到所有之匹配的应用,适用于不同应用之间的A...

2018-10-23 10:30:43 778

原创 写给 Android 开发者的混淆使用手册

本文转自:点击打开链接 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGuard,混淆流程将主项目以及依赖库中未被使用的类、类成员、方法、属性移除,这有助于规避64K方法数的瓶颈;同时,将类、类成员、方法重命名为无意义的简短名称,增加了逆向工程的难...

2018-09-03 15:10:30 229

原创 用观察者模式和非观察者模式设计一个交通信号灯调度系统

观察者 交通信号灯 调度 模式 设计 系统摘要:用观察者模式设计一个交通信号灯调度系统,有需要的朋友可以参考下。这是本人写一篇有关于Java中设计模式,多线程调度的一个Demo吧,本人水平有限,望各位博友批评指正。此Demo实现了现实交通信号灯调度车辆通行的功能,为了方便大家理解,省去了黄色信号灯。最近看了一些Java中的设计模式,比如最简单的单例模式,抽象工厂模式,观察者模式等。在学习了这...

2018-09-03 10:29:33 989

转载 Android:用GSON 五招之内搞定任何JSON数组

写在前面关于GSON的入门级使用,这里就不提了,如有需要可以看这篇博文 《Google Gson的使用方法,实现Json结构的相互转换》 ,写的很好,通俗易懂。我为什么写这篇文章呢?因为前几晚跟好友 xiasuhuei321 探讨了一下GSON解析复杂的JSON的时候,能不能只解析源数据中的数组,甚至只解析数组的某一部分。探讨了二十分钟,得出结论:没用过,不知道。所以今天特地研究了一下...

2018-08-29 17:29:11 574

转载 完美的适配Android8.0未知来源应用安装权限方案

完美的适配Android8.0未知来源应用安装权限方案大家的要求 提供源码,我自己写了一个demo,在虚拟机上可以运行,请查看源码:源码传送2018年5月纠正:@this蜗牛提供的需要设置包名,去打开权限设置界面才能在onActivityResult中接收到【resultCode 等于 RESULT_OK 】所以修改方法: @RequiresApi(api = Build.VERSION...

2018-07-10 11:47:35 1222 1

转载 Android Studio 3.0-3.1 汉化包

JetBrains 系列软件汉化包---平方X原创汉化Android Studio 3.0-3.1 汉化包CLion 2018.1 汉化包GoLand 2017.3.2-2018.1 汉化包IntelliJ IDEA 2017.3-2018.1 汉化包PhpStorm 2017.3-2018.1 汉化包PyCharm 2017.3-2018.1 汉化包RubyMine ...

2018-07-10 11:39:00 5454 1

转载 SVN在Android Studio中的配置

  在AndroidStudio中开发版本控制,除了Git就是SVN,和Eclipse不同Android Studio没有提供单独的插件,只能和SVN客户端关联使用,和Eclipse安装有很大区别,下面介绍个在AndroidStudio中SVN的安装和配置方法。一、SVN的安装      Eclipse都是直接安装插件就可以了,AndroidStudio不行,只能通过关联SVN客户端,需要特别注意...

2018-07-10 11:21:04 509

转载 Android架构师技能图谱

Android 架构师技能图谱架构与设计设计模式重构技术选型特性可用性性能包大小方法数文档技术支持UI架构模式MVCMVPMVVM研发工具集成开发环境Android StudioSublime Text版本控制系统svngitgitlabgithubmercurial调试工具ADBDDMSStethoLeakCanaryClassySharkPostmanmarkmanCodeReview工具Ge...

2018-07-10 10:53:21 403

原创 十行代码实现 沉浸式透明状态栏+隐藏标题栏

1.res/styles设置为<style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark"...

2018-06-01 10:54:14 937

原创 RxJava+Retrofit通用封装

public interface Api { //获得购物车的接口 public static final String GETCARS = "https://www.zhaoapi.cn/product/getCarts"; //Boss public static final String BASE = "http://120.27.23.105/";

2018-01-24 20:26:49 206

原创 Fragment+ViewPager静止滑动,去掉默认的滑动效果

最开始做的整个页面都可以滑动类似微信,但后来首页改版,frament内的滑动效果太多,就要去掉整个activity的滑动效果,但是想改起来快一点,就想到把viewpager滑动效果禁止掉,只能点击选择,上网一搜还真有并且很好用就推荐下。但是点击选择后还有滑动的效果,后来就想把viewpager的滑动动画去掉,搜了搜没找到,后来发现把滑动的切换时间可以改成不需要切换时间,这样就ok了,下面是源码。

2018-01-22 18:16:09 339

原创 Timer定时器的基本使用

//Timer定时器的基本使用Timer timer=new Timer();TimerTask task=new TimerTask(){ @Override public void run(){ Intent intent = new Intent(SplashActivity.this,MainActivity.class); star

2017-12-19 14:33:13 2540

用观察者模式和非观察者模式设计一个交通信号灯调度系统

用观察者模式设计一个交通信号灯调度系统,有需要的朋友可以参考下。这是本人写一篇有关于Java中设计模式,多线程调度的一个Demo吧,本人水平有限,望各位博友批评指正。此Demo实现了现实交通信号灯调度车辆通行的功能,为了方便大家理解,省去了黄色信号灯。最近看了一些Java中的设计模式,比如最简单的单例模式,抽象工厂模式,观察者模式等。在学习了这些设计模式之后,我又对之前写过的一些程序做了改进,本文贴一个交通信号灯的系统

2018-09-03

十行代码实现 沉浸式透明状态栏+隐藏标题栏

网上很多沉浸式实现起来很繁琐,实际上沉浸式并没有那么可怕,这个资料可以帮助大家最快,最轻松的实现沉浸式!

2018-06-01

空空如也

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

TA关注的人

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