SF
warmcheng技术小屋
warmcheng技术小屋
注册登录
关注博客
注册登录
主页
关于
RSS
Rxjava2.x源码解析(二): 线程切换
warmcheng
2019-05-21
阅读 26 分钟
3.7k
上一篇文章Rxjava2.x源码解析(一): 订阅流程中我们讲了 RxJava2 的订阅部分的源码。但 RxJava2 最强大的部分其实是在异步。默认情况下,下游接收事件所在的线程和上游发送事件所在的线程是同一个线程。接下来我们在上一篇文章的示例代码中加入线程切换相关代码:
Rxjava2.x源码解析(一): 订阅流程
warmcheng
2019-05-21
阅读 12 分钟
3.7k
现在网上已经有大量的源码分析文章,各种技术的都有。但我觉得很多文章对初学者并不友好,让人读起来云里雾里的,比源码还源码。究其原因,是根本没有从学习者的角度去分析。在自己完成了源码阅读之后,却忘记了自己是如何一步步提出问题,进而走到这里的。
工作、开源两不误:Git多账号管理
warmcheng
2019-04-14
阅读 4 分钟
3.2k
由于 Git 所具有的巨大优越性,越来越多的公司以及个人开始由 Svn 转向 Git 。一般来讲,每位员工都会被分配给一个公司内部的邮箱。比如一个 996 公司的员工 “张三”,获得的可能就是一个 “zhangsan@996icu.com” 的邮箱。比较规范的公司,就会要求我们使用自己的名字和公司所分配给自己的这个邮箱来配置 Git(姓名和邮箱...
LiveData && ViewModel 使用详解
warmcheng
2019-04-14
阅读 15 分钟
6.7k
在之前的文章中,我们讲了Android Architecture components 中的 Lifecycle 组件的详细使用以及源码解析。本篇将介绍另外AAC中另外两个组件:LiveData 和 ViewModel,它们的实现也都是利用了 Lifecycle。
生命周期组件 Lifecycle 源码解析(二)
warmcheng
2019-04-14
阅读 5 分钟
1.8k
上篇文章中我们以继承自 AppCompactActivity 这种情况来分析 Lifecycle 的源码。本篇,我们将一起来分析下继承自普通 Activity 这种情况下的源码分析。
生命周期组件 Lifecycle 源码解析(一)
warmcheng
2019-03-05
阅读 7 分钟
5.4k
在上篇文章:Android 生命周期组件 Lifecycle 使用详解 中,我们讲了 Lifecycle 的简单使用,本篇我们来研究下它的源码。 基础环境搭建 首先,按照上篇文章所讲,快速搭建环境。 添加 Lifecycle 轻量级依赖库: {代码...} 添加support library 28.0.0的支持库(希望大家能先保持一致,因为不同版本的源码是有区别的,后...
Android 生命周期组件 Lifecycle 使用详解
warmcheng
2019-02-28
阅读 6 分钟
6.2k
2018 年的 Google I/O 大会上,Google 发布了 Android Jetpack,并称其为下一代的 Android 组件,旨在帮助开发者加快应用开发速度。准确来讲,Jetpack 是一系列 Android 软件组件的集合,它包括基础组件、架构组件、行为组件、界面组件。其中的 Android Architecture Components 指的就是这里的 “架构组件”。
论搜索方法,低效的你简直在浪费生命(三)(终结篇)
warmcheng
2019-01-30
阅读 2 分钟
1.9k
平时我们想要搜索图片,大都是在搜索主页切换到图片那个 Tab 项,然后输入图片的关键字,比如“ 美女 ”、“ 鸟 ”。何为逆向搜索呢?就是我们手里有一张图片(可以是本地的,也可以是已知的某个网络上的链接地址),反过来,想知道跟这张图片有关的信息。因为跟我们正常搜索图片的方式相反,所以称之为“ 图片逆向搜索 ”。之...
论搜索方法,低效的你简直在浪费生命(二)
warmcheng
2019-01-29
阅读 3 分钟
2k
上篇文章中我们学习了 Google 的一些初级使用。这一篇文章我将带大家学习它的更多好玩儿的、进阶的用法。(除非特别说明,以下均不包含双信号,加粗部分即为输入搜索框中的内容),本篇开启多图流量预警。
论搜索方法,低效的你简直在浪费生命(一)
warmcheng
2019-01-19
阅读 3 分钟
3.3k
现如今,我们无无时无刻不在互联网上进行着搜索行为,我觉得搜索是一个人最重要的技能。所谓搜索,“就是在正确的地方使用正确的工具和正确的方法寻找正确的内容”。学会搜索,能极大的让我们从互联网上庞大信息中快速定位到对我们有用的信息,提高效率和准确率。在实际生活中,我发现很多人并不懂得搜索,这也是我下决心...
美团Walle多渠道打包+友盟统计+360加固
warmcheng
2018-07-06
阅读 5 分钟
9.7k
在实际项目开发过程中,由于运营的需要,我们往往需要知道我们的APP在各大应用市场的下载和具体使用情况,这时候我们往往需要接入第三方统计,较常用的就是友盟统计。具体接入方式可以查看友盟统计的官方接入文档:
Dagger2-终于学会了,还好没放弃(1)
warmcheng
2017-05-26
阅读 7 分钟
7.1k
MVP + RxJava + Retrofit + Dagger2 如今已经成了Android开发的主流框架,为了不落伍,我也开始了这个组合框架的学习,力求摆脱之前的那种简单粗暴的分包模式。于是也开始了 Dagger2 的学习之路。这几天断断续续的也看了很多文章,其中当然有很多优秀的文章,但是慢慢的觉得并没有哪一篇文章,是完全的能让人只需要看一...
Android中LayoutInflate解析xml布局文件生成View树的过程(一)
warmcheng
2017-05-03
阅读 12 分钟
8.1k
学习过自定义 View 的都知道,ViewGroup 的事件分发或者绘制都涉及到子 View 的遍历,在看ViewGroup 的源码的过程中发现了这个我们一直见到的 ViewGroup 的子 View 的集合,在这里是以数组的形式存储的:View[] mChildren。我就想,这个 mChildren 是在哪里赋值的呢?或者说是怎么被赋值的呢?这时候我想到,在平时我们...
PHP学习笔记
warmcheng
2017-04-05
阅读 1 分钟
2.2k
问题:运用 data("H") 函数的时候发现输出的时间值和系统的时间不相符,实际上出现该问题的原因是我们在PHP服务器中设置的时区不对。解决方法:选择wampserver -> PHP -> php.ini ,在里面搜索 timezone,你会发现下面这行:
使用.gitignore忽略编译自动生成的那些文件
warmcheng
2017-02-28
阅读 2 分钟
5k
今天闲下来,终于有时间解决下一直以来困扰我的一个Git的问题。就是如果当我们每次编译Android项目之后,用git status 命令查看后,总会有很多跟编译相关的文件显示为红色(如果你之前没有添加后者修改.gitignore文件的话)。这对于像我一样患有重度强迫症的患者当然是不能接受的。那么我们就来简单的看下.gitignore文件...
android 四大组件之Service
warmcheng
2016-12-03
阅读 12 分钟
3.1k
最近趁着有时间,将以前的知识整理下,要不然总容易遗忘,今天就来讲解下Service的用法。作为Android的四大组件之一,其重要性可想而知。在应用中我们主要是用来进行一些后台操作,不需与应用UI进行交互,执行耗时任务等。
对象的序列化存储:Serializable 和 Parceable
warmcheng
2016-12-01
阅读 6 分钟
5.6k
在进行Android开发的时候我们有时候需要用到数据的持久化存储,或者在进程之间传递数据。其中就可能需要用到对象的序列化,经过序列化的对象之后可以通过Intent或者Boundle来传输了。接下来还是想些介绍下吧。
Android Studio下应用签名的方法以及获取 MD5、SHA1(签名)、SHA256 值
warmcheng
2016-11-23
阅读 3 分钟
18.6k
在开发中我们可能经常需要用到一些第三方公司的SDK,比如:百度地图SDK、腾讯的分享朋友圈的SDk等,我们使用这些SDK有个前提就是我们需要将我们应用的签名和包名添加进去,跟我们在这些第三方SDK公司网站里创建的应用联系起来(我们需要在里面填写我们的应用签名)
ViewPager实现轮播广告图
warmcheng
2016-11-22
阅读 14 分钟
8.1k
实现思路:1.为ViewPager设置数据源,实现ViewPager的滚动2.将圆点指示器与ViewPager的页面对应起来3.实现左右滑动均能无限循环4.实现自动播放5.实现当手指滑动的时候取消自动播发
使用Java输出杨辉三角
warmcheng
2016-11-13
阅读 2 分钟
4.5k
该篇文章用于输出杨辉三角,杨辉三角的定就是里面的某一个数等于其上边紧邻的两个数的和,效果如下: {代码...} 具体代码: {代码...}
单例模式
warmcheng
2016-10-26
阅读 2 分钟
1.6k
注意:在单线程环境下,上面两个单例模式都可以正常工作,但是当处于多线程环境下,仍然可能产生多个实例,这就违背了单例模式的设计初衷,这时候,就需要用到锁的机制,性能最好的,当然就是接下来要介绍的双检测锁机制的单例模式啦。
JPush消息推送的简单使用
warmcheng
2016-10-26
阅读 10 分钟
11.6k
在本篇文章里我们以极光推送JPush为例,简单的介绍下消息推送的简单使用。这里只是简单介绍下步骤及简单使用,作为本人的笔记,详细介绍可以参见极光官网文档:[链接]
常用基本排序算法
warmcheng
2016-09-18
阅读 7 分钟
3k
图片截取自:[链接]算法复杂度:图片截取自:[链接]文章参考了:[链接][链接][链接]所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。1.冒泡排序冒泡排序应该属于最简单的排序算法了。冒泡排序其实就是通过比较相邻位置的元素大小,如果左边比右边大,就...
SwipeMenuListView的简单使用
warmcheng
2016-09-17
阅读 19 分钟
10k
这几天在学习开源项目SwipeMenuListView的简单使用,之所以说是“几天”,是因为在导入项目到Android-studio的过程中出现了各种各样的问题,我是直接打开的它里面的Demo,但是会出现各种错误,似乎并不是一个完整的Project,发现没有app目录。在网上看各种教程,也大都是要你把它的类库直接复制一份到自己的项目中去,但是...
华为手机Log.d无法打印日志的解决
warmcheng
2016-09-17
阅读 2 分钟
15.8k
最近又遇到华为手机无法打印日志的问题,网上查资料说是华为手机默认Log调试开关是没有打开的,那么我们就可以通过以下方法来打开Log开关:1.进入拨号界面输入(最好是系统自带的拨号界面,在本人的手机上其他拨号软件竟然没反应...也是醉了...)*#*#2846579#*#*2.依次选择ProjectMenu---后台设置----LOG设置---LOG开关 ...