- 博客(81)
- 资源 (16)
- 收藏
- 关注
原创 Fragment(四)常见问题
通过这篇博客,我们能知道以下问题:* `Fragment` 在不同情况下实现网络延迟* `Fragment` 为什么一定要有无参构造?* `Fragment` 与 `Activity` 传递数据方式* 嵌套 `Fragment` 时父 `Fragment` 生命周期传递到子 `Fragment` 中的方式......
2022-07-14 19:24:53
929
原创 Fragment(三)ViewPager中使用Fragment
通过这篇博客,我们能知道以下问题:* `Fragment` 加载到 `ViewPage`上的过程和用户可见性判断* `Fragment` 加载到 `ViewPage2`上的过程和用户可见性判断
2022-07-14 19:22:49
836
原创 Fragment(二)状态改变与管理
通过这篇博客,我们能知道以下问题:`Fragment` 的 `mState` 变化过程 `FragmentManager` 的 `mCurState` 变化过程
2022-05-16 11:39:26
1104
原创 Fragment(一)从源码角度看add和replace过程
通过这篇博客,我们能知道以下问题: `Fragment` `add()` 和 `replace()` 方法差别 从源码角度分析 `add()` 和 `replace()` 方法
2022-05-06 16:58:55
1125
原创 View和ViewGroup中的mParent
View和ViewGroup中的mParent源码版本为 Android 10(Api 29),不同Android版本可能有一些差别mParent从名字看,应该表示父View,而这篇博客我们就是要探索View和ViewGroup中的mParent分别表示什么,以及在什么地方赋值的。页面顶层View(DecorView)中 mParent 表示的什么?通过《Activity 的组成》 我们知道了界面的顶层View是DecorView,那么我们查看mParent的来源,首先就应该查看 DecorView
2021-06-22 18:24:36
548
1
原创 Activity常见问题
Activity常见问题通过这篇博客,我们能知道以下问题:Activity 各种情况下的生命周期弹出 Dialog 对 Activity 生命周期有什么影响?onActivityResult() 在哪两个生命周期之间回调?Activity 在 onResume() 之后才显示的原因是什么?通过 Sheme 协议打开 ActivityActivity 什么时候会发生重建?在 Activity 的 onCreate() 方法里写死循环会 ANR 吗?1. Activity 生命周期方法相关
2021-06-11 18:05:59
1825
4
原创 Android Handler机制
《Android Handler机制》《Android Handler分析(一) Handler和Message详解》《Android Handler分析 (二) MessageQueue详解》《Android Handler分析 (三) Looper详解和Handler其他知识》《Android 中的 HandlerThread 类详解》作为一个Android程序员,我想大家都知道在做一些比较耗时的操作的时候都不会放在主线程,比如网络请求、数据库操作等(尤其是网络请求,在Android4.0.
2021-03-05 16:00:43
288
原创 Android Activity——启动过程探索(三)
在《Android Activity——启动过程探索(一) 和 《Android Activity——启动过程探索(二) 中我们知道了Activity启动的生命周期回调,并且分析了其中当前Activity的 onPause() 和新打开的Activity的 onCreate() 、 onStart()和onResume()回调执行过程,也就是新的Activity已经完成了 “创建->用户可见->用户可操作” 的过程。那么当前的Activity就变为不可见了,需要执行 onstop() 回调,如
2021-03-02 23:01:35
1048
原创 Android Activity——启动过程探索(二)
在《Android Activity——启动过程探索(一)》中我们知道了Activity启动的生命周期回调,并且分析了其中当前Activity的 onPause() 和新打开的Activity的 onCreate() 回调方法执行步骤,在这篇文章中接着分析新打开的Activity的 onStart()和onResume()回调执行过程。注意:以下分析过程,源码版本为 Android 10(Api 29),不同Android版本可能有一些差别。新的Activity调用 onStart()根据上图查看对
2021-02-26 14:05:16
750
原创 Android Activity——启动过程探索(一)
Activity 生命周期:首先来看一下当Activity启动时,会回调哪些生命周期的方法:不关闭当前Activity启动流程:关闭当前Activity启动流程:对于上面的回调过程,我想大部分Android开发者都是知道的,但是对于系统是怎样一步一步来回调这些方法的,可能存在不少疑问。下面我们就通过源码来看看当我们调用 startActivity() 和 finish() 方法时系统是怎样一步步来回调各个方法的。其实对于每一个生命周期方法的调用,都可以看做是一小步,所以我们的分析就可
2021-02-08 16:53:45
879
1
原创 Android Service 流程分析
在前面已经对Service基本使用及aidl使用及源码进行的分析。在这篇文章中,我们来看一下Android Service的启动流程和绑定流程,以便于更好的理解Android Service的机制。启动Service过程Android Service启动时序图上图就是Android Service启动时序图,对照图查看代码。我们在 Activity 中调用 startService() 方法时,直接调用了 调用 ContextWrapper 的 startService()@Overridep
2020-11-23 21:11:47
650
原创 Android Service aidl分析
《Android Service基础》《Android Service回调和配置》《Android Service aidl使用及进阶》《Android Service更多知识》《Android 中的 IntentService 类详解》Android Service 代码地址在介绍正文之前,我们先看看几个知识点进程、线程和Android中的进程间通讯(IPC)。线程:线程时CPU调度的最小单元,同时线程也是一种有限的系统资源。进程:进程一般表示一个执行单元,在..
2020-11-07 21:08:26
475
原创 Android FlowLayout 流式布局
FlowLayout 流式布局Android 流式布局控件,实现自动换行,操出范围可以滑动功能,未使用控件复用功能,所以不应该有太多的子控件。主要包含功能:流式布局,自动换行使用Adapter的形势注入子控件设置子控件之间的间距(水平方向和竖直方向)竖直方向超出高度可以滑动给子控件设置点击监听设置可显示的最大行数,并提供方法判断是否当前所有的子控件都显示完成可以设置行内水平方向上对齐方式(居左对齐、居右对齐、两端对齐/左右对齐、居中对齐)提供自动滚动到顶部、滚动到底部、滚动到指定位置和
2020-11-02 16:13:02
1485
2
原创 Android Service更多知识
这篇文章主要介绍的是一些Service的相关知识,绑定服务中服务器异常中断时处理办法(死亡代理 DeathRecipient)、服务器数据更新后实时通知客户端(回调通知以及RemoteCallbackList)、Service运行线程说明、使用 Messenger 实现 Servie 与 Client 端通信、可以执行耗时操作的Service(IntentService)、怎样选择什么类型的Service死亡代理 DeathRecipient在前面的几篇文章中,我么知道了服务的绑定、aidl的使用等,我
2020-10-29 00:10:27
569
原创 Android Service aidl使用及进阶
AIDL:Android 接口定义语言,可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信。在 Android 中,一个进程通常无法访问另一个进程的内存。因此,为进行通信,进程需将其对象分解成可供操作系统理解的原语,并将其编组为可供操作的对象。编写执行该编组操作的代码较为繁琐,因此 Android 使用 AIDL 为简化此问题。注意: 只有在需要不同应用的客户端通过 IPC 方式访问服务,并且希望在服务中进行多线程处理时,才有必要使用 AIDL。如果无需跨不同应用
2020-10-26 21:11:10
1690
1
原创 数据结构——链表(二)
在《数据结构——链表(一)》一文中,我们介绍了链表的基本操作与实现,这篇文章我们来进一步学习链表的一些操作链表进阶判断单向链表是否有环快慢指针法: 定义两个指针,通过两个指针的移动速度不同来实现功能,常用来寻找中间节点(快指针移动速度是慢指针的两倍,快指针移动到结尾时,慢指针刚好在中间)、判断单链表是否有环等操作。利用快慢指针法判断单链表是否有环的代码实现如下:public boolean hasCircle() { if (header == null) return false;
2020-10-24 20:38:36
336
原创 数据结构——链表(一)
链表基础链表链表是由一组不必相连【不必相连:可以连续也可以不连续】的内存结构,按特定的顺序链接在一起的抽象数据类型。是一种线性表,但是并不会按线性的顺序存储数据,而是在由一个个节点组成,节点一般包含存放数据的数据域和存放指针的指针域。补充: 抽象数据类型(Abstract Data Type [ADT]):表示数学中抽象出来的一些操作的集合。 内存结构:内存中的结构,如:struct、特殊内存块...等等之类;下图就是一种简单的链表对比数组数组是在相连的内存空间,由相同数据类
2020-10-24 20:23:52
377
原创 Android Service回调和配置
Service 生命周期方法回调创建服务,必须创建 Service 的子类(或使用它的一个现有子类)。可以重写一些回调方法,从而处理服务生命周期的某些关键方面,主要的回调方法有 onCreate()、onBind()、onRebind()、onStartCommand()、onStart()、onUnbind()、onDestroy()。onCreate()首次创建服务时,系统会(在调用 onStartCommand() 或 onBind() 之前)调用此方法来执行一次性设置程序。如果服务已在运行,则
2020-09-29 00:39:55
1839
原创 Android Service基础
简单介绍Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。服务可以分为前台、后台和绑定三种类型。分类前台服务前台服务执行一些用户能注意到的操作。例如,音频应用会使用前台服务来播放音频曲目。前台服务必须显示通知。即使用户停止与应用的交互,前台服务
2020-09-27 23:42:09
620
原创 gradle常用命令和查看错误
Gradle 常用命令和查看错误信息Gradle 是 Android 现在主流的编译工具,使用它可以帮助我们编译、打包APP等过程。同时,我们也可以为Gradle指定构建规则,让它按照我们的指定构建应用。在Android中,我们常用的clean、build等其实就是使用的gradle方式来进行构建的,只是这些Android studio帮我们做了,我们只需要在界面上进行点击就可以了。但是,还有一...
2020-04-01 00:29:12
2076
1
原创 Android实现圆角控件
Android实现圆角控件在Android开发过程中,控件的使用是最常见、最基本的。但是我们都知道,在Android中的控件都是矩形的,而在实际项目中,我们的UI设计师经常会使用一些圆角的控件。那么,在Android有哪些方式可以实现圆角控件了,在使用和适配的过程当中,又有哪些问题了。下面,我将介绍Android中常见的实现圆角方式。自定义方式实现圆角:[外链图片转存失败,源站可能有防盗链机...
2020-03-30 23:48:23
1459
原创 Volley框架(一):使用Volley请求数据
volley官网地址:https://android.googlesource.com/platform/frameworks/volley/volley发布视频:https://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded网络是Android开发中非常重要的一部分,Android系统中主要提供了两种方...
2019-12-21 21:48:32
1606
原创 Android 进度控件
Android 进度控件Android 圆形、半圆形进度效果、半圆SeekBar、刻度尺效果实现代码下载:GitHub地址效果图控件的使用布局中设置属性 <!-- CircleProgressView(圆形进度条) --> <com.renj.progress.CircleProgressView android:id="@+id/circl...
2019-11-30 23:40:13
589
原创 Android开发常见问题
Android开发常见问题解决Android7.0 以上系统无法使用工具抓包问题解决Android7.0 以上系统无法使用工具抓包问题1 在res/xml 夹下新建 network_security_config.xml 文件2 在 network_security_config.xml 文件中输入一下内容: <?xml version="1.0" encoding="u...
2019-11-01 16:27:55
375
原创 Activity 启动模式及任务栈探究
Activity 启动模式及任务栈探究在Android中,默认情况下,当我们启动一个Activity的时候,系统会创建一个Activity实例然后将它放入任务栈(任务栈是一个 “后进先出” 的栈结构)中,当我们按 back 键返回时,这些Activity就会一一回退。但是当我们重复启动一个Activity多次时,就会创建多个该Activity的实例,同样返回时要多次返回一个一个退出才行,在很多情...
2019-08-08 20:00:53
861
原创 ViewModel+LiveData+DataBinding使用
ViewModel+LiveData+DataBinding使用Android DataBinding 使用博客说明Android DataBinding 使用测试代码简书:ViewModel、LiveData 使用CSDN:ViewModel、LiveData 使用在上面的内容中,知道了 DataBinding 的使用,以及 ViewModel和LiveData的使用,在LiveDat...
2019-07-30 15:30:36
2624
7
原创 ViewModel、LiveData 使用
ViewModel、LiveData 使用官方中文教学地址在看以下内容之前,如果对DataBinding不够熟悉,建议先对DataBinding进行了解。Android DataBinding 使用博客说明Android DataBinding 使用测试代码ViewModel 简介ViewModel类是用来保存UI数据的类,它会在配置变更(即 Configuration Change,...
2019-07-23 02:29:39
569
原创 Android好用/常用框架整理
Android好用/常用框架整理(持续更新中…)数据库框架greenDaoGitHub地址:greenDaogreenDao数据库升级帮助框架:GreenDaoUpgradeHelper构建框架MVVM快速构建MVVM架构帮助框架:MVVMLight...
2019-07-17 01:06:42
543
原创 Java中Collection和Map体系(Java容器)
Java中Collection和Map体系(Java容器)Java常用容器类继承关系图解Java容器类简介Java中容器类主要分为四中体系:List、Set、Queue、Map。List:代表有序、可重复的集合;Set:代表无序、不可重复的集合;Queue:代表一种队列集合实现;Map:代表具有映射关系的集合。容器简介Collection:Collection体系中的基本接口...
2019-07-01 00:02:44
633
原创 Android页面状态控制框架(RPageStatusController)
Android页面状态控制框架(RPageStatusController)在Android开发中,对于需要加载网络数据的页面,一般页面都会对应多种状态,常见的有:加载中状态、网络错误状态、内容为空状态、内容状态、加载失败状态以及没有找到相关内容状态等。对于这种需求,一般的做法是在需要有多种状态的页面的跟布局使用 FrameLayout,然后添加不同的状态页面,最后在代码中进行控制。当然为了编...
2019-06-25 17:28:43
1079
原创 Android RecyclerView —— 自定义分割线
Android RecyclerView —— 自定义分割线Android RecyclerView —— 基本使用Android RecyclerView —— 适配器封装探索前面说了 RecyclerView 的基本使用以及对适配器的封装,但是在使用 ListView 时,有 dividerHeight 和 divider 属性用来设置分割线的高度和颜色(Drawable),但是在 Re...
2019-06-17 16:39:49
3591
原创 Android RecyclerView —— 适配器封装探索
Android RecyclerView —— 适配器封装探索RecyclerView 适配器的编写RecyclerView 如果需要填充数据,就必须使用到适配器。在一般情况下,我们定义一个适配器只需要定义一个类,然后集成 RecyclerView.Adapter 类,然后实现齐总的抽象的方法即可,如下,实现一个简单的适配器:public class MyAdapter extends Re...
2019-06-16 16:22:52
1590
5
原创 Android RecyclerView —— 基本使用
Android RecyclerView —— 基本使用RecyclerView 我相信大家都不陌生,是Google在Android 5.0 的时候推出的一个可以在有限的窗口中展示大量数据集的控件(类似的控件有ListView、GridView),放在了 com.android.support:recyclerview-v7:xx.x.x 包下(xx表示版本),那么既然已经有了ListView、...
2019-06-12 16:32:17
4281
原创 Dagger 2.11及以上的简便用法
Dagger 2.11及以上的简便用法关于 Dagger2 的使用网上有很多的例子,这里就不在多说了。但是dagger2在使用的过程中我们几乎需要在每个页面去调用类似代码如下:MainComponent component = DaggerMainComponent.builder() .mainModule(new MainModule()).build(); ...
2018-12-26 19:23:00
509
原创 Vim基本操作
Vim基本操作Vim一般认为有三种模式命令模式:该模式下是不能直接对文件进行编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件默认进入的模式】编辑模式(输入模式):该模式下可以对文件的内容进行编辑末行模式(尾行模式):该模式下可以在末行输入命令来对文件进行操作(搜索,替换,保存,退出,撤销,高亮等等)Vim的打开文件方式【vim 文件路径】:打开指定...
2018-11-25 18:03:31
528
原创 Linux 基本指令
Linux 基本指令推荐:linux命令大全Linux关机命令常用:halt、reboot重启命令rebootshutdown -r now 立刻重启shutdown -r 10 过10分钟自动重启shutdown -r 20:35 在时间为20:35时候重启shutdown -c 取消重启关机命令haltpoweroff 立刻关机shutdown -h now...
2018-11-13 00:27:00
265
原创 Android DataBinding
Android DataBindinggithub 传送门 https://github.com/itrenjunhua/AndroidDataBinding简单使用数据绑定1、添加 Android DataBinding 支持Android studio 需要在1.3以上,在module级别的gradle中添加大DataBinding支持android { data...
2018-11-06 09:40:50
1342
原创 Android适配生成对应的values文件
Android适配生成对应的values文件(如:values-1080x1920)使用如下Java代码自动生成多个values文件夹以及对应的lay-x、lay-y文件import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io...
2018-10-09 10:31:03
1424
原创 Android 中的 IntentService 类详解
Android 中的 IntentService 类详解简介、与 Service 的区别IntentService 继承至 Service ,所以 Service 的特点 IntentService 也全部拥有。首先,我们看一下 Service 的一些问题: Service 默认运行在主线程,不能执行耗时操作; 如果要在 Service 中执行耗时的操作,需...
2018-03-07 14:29:25
535
原创 Android 中的 HandlerThread 类详解
Android 中的 HandlerThread 类详解简介HandlerThread 类继承至 Thread 类,你可以把它看做是一个普通的线程类;当然,既然我们今天要说它,就不能在把它看做是一个普通的线程类了类处理了。HandlerThread 类与普通的线程类的主要区别就是:重写 run() 方法,并且创建了一个属于自己线程包含消息队列 Looper 对象;同时提供了 getLo...
2018-03-06 18:18:29
919
RxJava2 中常用操作符和Subject常用子类说明、RxBus类(新)
2017-12-11
RxJava2常用操作符示例代码
2017-12-08
EditText扩展XEditText
2017-10-11
Android 浮动菜单
2017-06-14
RecyclerView使用示例
2017-04-14
Glide框架测试
2017-04-10
OkHttp库封装
2017-03-29
Volley封装
2017-03-07
Picasso简单封装
2016-12-29
Android 操作引导工具
2016-12-26
Android 操作引导
2016-12-26
Android 水波纹效果
2016-12-25
Android水波纹效果
2016-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人