Android
文章平均质量分 82
JMW1407
这个作者很懒,什么都没留下…
展开
-
Android:LeakCanary原理的简单理解和使用
1、使用进行,从而来监听Activity的何时被destroy。2 、在的回调中,去检测Activity是否被回收,检测方式如以下步骤。3、使用一个弱引用指向这个activity,并且给这个弱引用指定一个引用队列queue,同时创建一个key来标识该activity。4 、然后将检测的方法投递到空闲消息队列。5、当空闲消息执行的时候,去检测queue里面是否存在刚刚的弱引用,如果存在,则说明此activity已经被回收,就移除对应的key,没有内存泄漏发生。6 、如果queue。原创 2023-05-04 22:18:39 · 4643 阅读 · 2 评论 -
Android:ThreadLocal的简单理解和使用
1、本质是操作线程中来实现本地线程变量的存储的2、是采用数组的方式来存储数据,其中key(弱引用)指向当前对象,value为设的值3、为内存泄漏采取了处理措施,在调用的方法的时候都会清除线程里所有key为null的Entry4、在使用的时候,我们仍然需要注意,避免使用static的,分配使用了后,一定要根据当前线程的生命周期来判断是否需要手动的去清理中清key==null的Entry。原创 2023-03-26 14:54:59 · 1732 阅读 · 0 评论 -
Android:IdleHandler的简单理解和使用
IdleHandler 说白了,就是 Handler 机制提供的一种,可以在 Looper 事件循环的过程中,当出现空闲的时候,允许我们执行任务的一种机制。,当然要注意这里执行的代码同样不能太耗时,因为它是同步执行的,如果太耗时肯定会影响后面的 message 执行。MessageQueue 是一个基于消息触发时间的优先级队列,所以队列出现空闲存在两种场景。,也就是当下次队列空闲的时候,不会继续回调它的 queueIdle 方法了。这个获取消息队列下一个待执行消息的方法中,我们跟一下具体的逻辑。原创 2023-02-27 09:19:01 · 4263 阅读 · 2 评论 -
Android:同步屏障的简单理解和使用
这样发送的消息都是普通消息也就是同步消息,发出去的消息就会在MessageQueue中排队。这里我们假设一个场景:我们向主线程发送了一个UI绘制操作Message,而此时消息队列中的消息非常多,那么这个Message的处理可能会得到延迟,绘制不及时造成界面卡顿。同步屏障机制的作用,是让这个绘制消息得以越过其他的消息,优先被执行。在请求监听Vsync信号时,阻塞Handler消息队列中的同步消息,优先保证接收Vsync信号的异步消息,及时生成新的屏幕数据,供屏幕显示。,会将即将处理的消息移除队列并返回;原创 2023-02-23 21:21:55 · 2946 阅读 · 0 评论 -
Android:Navigation使用safe args插件传递参数
这里需要在FragmentA跳转到FragmentB时传参数,所以给FragmentB设置参数,点击FragmentB,点击右侧面板的Arguments右侧的+,输入参数的key值,指定参数类型和默认值,即可快速添加参数。afe args与传统传参方式相比,好处在于安全的参数类型,并且通过谷歌官方的支持,能很方便的进行参数传值。注意:在目标Fragment中定义你要传递的参数,不是在一开始的Fragment中定义你的传递参数。safeArgs会根据nav_graph中的fragment标签生成对应的类,原创 2022-11-22 22:20:35 · 2929 阅读 · 0 评论 -
Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据
【代码】Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据。原创 2022-11-21 22:23:58 · 4263 阅读 · 0 评论 -
Android:如何在 android constraintLayout 中设置视图的最大宽度?
如果您将它添加到您的 SeekBar,其值为 200dp,保持父级的左右约束和 0dp 的宽度,它会将视图的宽度拉伸到 200dp,但如果有更多空间,它将保持在200dp。原创 2022-11-20 20:03:41 · 1587 阅读 · 0 评论 -
Android:安卓学习笔记之共享元素的简单理解和使用
Andriod5.0及之后,开始支持共享元素动画,两个Activity或者fragment可以共享某些控件,例如ActivityA跳转到ActivityB的时候,A的某个控件能自动移动到B的相应控件的位置,产生动画。当然了,你也可以为任何非共享的View设置Transition过渡动画,只不过调用的API变了在对应的Fragment中调用。记住,返回Transition需要在跳转Fragment中调用相应的方法,要不然你得不到你想要的效果的。...原创 2022-07-28 19:14:36 · 2690 阅读 · 0 评论 -
Android:安卓学习笔记之navigation的简单理解和使用
Jetpack提供了一个名为Navigation的组件,旨在方便开发者管理Fragment页面和Appbar原创 2022-07-21 22:40:19 · 12008 阅读 · 2 评论 -
Android:安卓学习笔记之MVP模式的简单理解和使用
Android MVP模式的简单理解和使用MVP模式参考MVP模式参考1、一步步带你精通MVP2、移动架构这么多,如何一次搞定所有原创 2022-03-11 21:56:19 · 7586 阅读 · 2 评论 -
Android:安卓学习笔记之OkHttp原理的简单理解和使用
Android OkHttp使用原理的简单理解和使用OkHttp0、前言1、请求与响应流程1.1 请求的封装1.2 请求的发送1.3 请求的调度1.4 请求的处理2、拦截器2.1 RetryAndFollowUpInterceptor2.2 BridgeInterceptor2.3 CacheInterceptor2.3.1、HTTP缓存原理2.3.2、强制缓存2.3.3、协商缓存(对比缓存)2.3.4、OKHttp的缓存实现2.3.4.1、缓存策略2.3.4.2、Okhttp的缓存策略2.3.4.3、缓存原创 2022-01-26 17:35:40 · 4290 阅读 · 1 评论 -
Android:安卓学习笔记之Bitmap的简单理解和使用
Android Bitmap的简单理解和使用Android Bitmap一.Bitmap的定义二.Bitmap的格式2.1 存储格式2.2 压缩格式三.Bitmap创建方法3.1 BitmapFactory3.1.1、 Bitmap.Options类3.2 Bitmap静态方法3.3 创建Bitmap的总结四.常见函数4.1 函数及其参数4.2 常用操作五.常见问题5.1 Bitmap与Canvas,View,Drawable的关系5.2 使用Bitmap如何造成内存溢出的?5.3怎么解决或者避免Bitm原创 2022-01-14 18:33:49 · 13765 阅读 · 2 评论 -
Android :安卓学习笔记之 Android View绘制 的简单理解和使用
Android View的简单理解和使用Android View参考Android View参考1、Android View详解2、教你搞定Android自定义View3、每日一问(十九)请描述一下View的绘制流程原创 2022-01-13 08:44:31 · 1827 阅读 · 1 评论 -
Android :安卓学习笔记之 Android View 的基础知识和冲突事件处理
Android View的简单理解和使用Android View1、View的基础知识1.1 什么是View1.2 View的位置参数1.3 MotionEvent和TouchSlop1.3.1. MotionEvent1.3.2.TouchSlop1.4 VelocityTracker、GestureDetector和Scroller1.4.1 VelocityTracker:速度追踪1.4.2 GestureDetector:手势检测1.4.3 Scroller:弹性滑动对象2、View的滑动2.1 使原创 2022-01-12 08:14:24 · 688 阅读 · 0 评论 -
Android:安卓学习笔记之进程间通信方式(IPC)的简单理解和使用
进程间通信方式 的简单理解和使用进程间通信方式1、背景1.1、进程空间划分1.2、进程隔离 & 跨进程通信( IPC)1.3、基础概念:序列化方式1.3.1、Serializable接口1.3.2、SParcelable接口2、通讯方式种类3、使用Bundle4、使用文件共享5、使用Messenger5.1、Messenger是什么?5.1.1、Messenger源码简单说明5.2、使用步骤5.2.1、服务端:5.2.2、客户端5.3、使用案例5.4、特征分析6、使用AIDL6.1、AIDL是什么?原创 2022-01-11 07:49:15 · 1351 阅读 · 0 评论 -
Android:安卓学习笔记之Binder 机制的简单理解和使用
Binder 机制 的简单理解和使用Binder 机制参考Binder 机制参考1、图解Android中的Binder机制2、Android Binder(也许是最容易理解的)3、图文详解Binder跨进程通信原理4、Android 接口定义语言 (AIDL)...原创 2022-01-10 07:47:59 · 5354 阅读 · 1 评论 -
Android:安卓学习笔记之GreenDao 的简单理解和使用
GreenDao 的简单理解和使用GreenDao1、前言2、greenDAO 概述3、ORM 框架概述4、greenDAO 使用4.1、准备工作4.1.1、引入 greenDAO4.1.2、创建实体类4.1.3、自动生成实体类代码4.1.4、初始化 greenDAO4.2、具体使用(增删改查)4.2.1、新增数据4.2.2、查询数据4.2.3、更新数据4.2.4、删除数据4.2.5、GreenDaoManager 完整代码5、总结2、参考GreenDao1、前言关于 Android 中常用的数据存原创 2022-01-09 09:19:12 · 14509 阅读 · 1 评论 -
Android:安卓学习笔记之Service 的简单理解和使用
Service 的简单理解和使用Service1、简介1.1、背景1.2、什么是Service?2、生命周期2.1、常用函数2.2、生命周期方法具体介绍3、分类4、使用4.1、本地Service4.2、可通信的服务Service4.3、前台Service4.4、IntentService4.4.1、Service和IntentService对比4.4.2、使用4.4.3、源码分析5、总结6、面试问题参考Service1、简介1.1、背景你一般在什么情况下会使用Service?经验总结:Ser原创 2022-01-08 08:55:30 · 4986 阅读 · 2 评论 -
Android:安卓学习笔记之广播机制的简单理解和使用
广播机制的简单理解和使用广播机制广播简介广播分为两大类1.标准广播(Normal broadcasts)2.有序广播(Ordered broadcasts)注册方式静态注册广播动态注册广播两种注册各有什么优缺点发送无序广播发送有序广播常见问题1、怎样设置有序广播的接收顺序呢?2、前面的广播接收器怎样截断正在传递的广播呢?3、BrocastReceiver 里可不可以执行耗时操作4、BroadcastReceiver,LocalBroadcastManager 区别5、如何通过广播拦截和 abort 一条短信原创 2022-01-08 08:41:39 · 2741 阅读 · 0 评论 -
Android :安卓学习笔记之 事件分发机制 的简单理解和使用
Android 事件分发机制的简单理解和使用事件分发机制参考事件分发机制参考1、Android事件分发机制详解:史上最全面、最易懂2、图解 Android 事件分发机制转载 2022-01-05 07:44:20 · 336 阅读 · 0 评论 -
Android:安卓学习笔记之MVC、MVP模式的简单理解和使用
Intent的理解和使用Intent的理解和使用1、什么是Intent参考Intent的理解和使用1、什么是Intent参考1、https://www.jianshu.com/p/9a6845b268562、https://blog.csdn.net/vector_yi/article/details/24719873?utm_source=tuicool3、https://www.cnblogs.com/JustRun1983/p/3679827.html4、https://www.cnbl原创 2021-12-20 18:19:20 · 2043 阅读 · 0 评论 -
Android :安卓学习笔记之 System.currentTimeMillis()计算方式与时间单位的转换
@TOCSystem.currentTimeMillis()在开发过程中,通常很多人都习惯使用new Date()来获取当前时间。new Date()所做的事情其实就是调用了System.currentTimeMillis()。如果仅仅是需要或者毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点。如果需要在同一个方法里面多次使用new Date(),通常性能就是这样一点一点地消耗掉,这里其实可以声明一个引用。 package dem原创 2021-12-19 23:44:30 · 2257 阅读 · 0 评论 -
Android :安卓学习笔记之 Handler机制 的简单理解和使用
Android Handler机制的简单理解和使用1、Handler使用引出2、背景和定义3、作用4、相关概念5、工作流程5.1、对应关系6、基本使用7、参考1、Handler使用引出现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎闪屏页面),如下图:可能觉得直接开启一个包含倒序循环的子线程就ok了,具体实现如下:activity_main<?xml version="原创 2021-12-18 18:00:16 · 5108 阅读 · 1 评论 -
Android :RxJava学习笔记之 错误处理
错误处理 1、错误处理参考1、错误处理参考1、RxJava2 错误处理详解原创 2021-12-08 09:03:21 · 1339 阅读 · 0 评论 -
Android :安卓第一行代码学习笔记之 解析LifeCycle 的简单理解和使用
LifeCycles 的简单理解和使用LifeCycles参考LifeCycles参考1、Jetpack系列学习笔记整理一 之LifeCycles2、Android Jetpack架构组件之 Lifecycles(使用篇)原创 2021-12-06 10:41:25 · 3458 阅读 · 0 评论 -
Android :安卓第一行代码学习笔记之 ViewModel组件的简单理解和使用
ViewModel组件ViewModel组件参考ViewModel组件参考1、Android架构之ViewModel组件2、Android之ViewModel的使用3、Android ViewModel,再学不会你砍我4、Android mvvm框架之ViewModel篇5、Android JetPack组件之ViewModel的使用详解...原创 2021-12-05 10:17:54 · 1058 阅读 · 0 评论 -
Android :安卓第一行代码学习笔记之 material design简单理解和使用
material design简单理解和使用material design简单理解和使用1、 Toolbar2、 滑动菜单2.1、DrawerLayout2.2、NavigationView3、 悬浮按钮和可交互提示3.1、悬浮按钮3.2、Snackbar3.3、CoordinatorLayout4、 卡片式布局4.1、CardView4.2、AppBarLayout5、 下拉刷新6、 可折叠式标题栏6.1、CollapsingToolbarLayout参考material design简单理解和使用M原创 2021-12-04 15:55:09 · 2070 阅读 · 1 评论 -
Android :第一行安卓代码学习笔记之 全局获取 Context
全局获取 Context全局获取 Context参考全局获取 ContextAndroid 开发中很多地方需要用到 Context,比如弹出 Toast、启动活动、发送广播、操作数据库……由于很多操作都是在活动中进行的,而活动本身就是一个 Context 对象,所以获取 Context 并不是那么困难。但是,当应用程序的架构逐渐开始复杂起来的时候,很多的逻辑代码都将脱离 Activity 类,由此在某些情况下,获取 Context 并非那么容易。Android 提供了一个 Application原创 2021-12-03 08:45:46 · 259 阅读 · 0 评论 -
Android :安卓第一行代码学习笔记之 解析JSON格式数据
解析JSON格式数据解析JSON格式数据1、使用JSONObject2、使用GSON解析3、使用实例参考解析JSON格式数据1、使用JSONObject1、首先接收服务器返回的数据private void okHttpRequest() { new Thread(new Runnable() { @Override public void run() { try {原创 2021-11-23 08:49:09 · 2567 阅读 · 0 评论 -
Android :安卓学习笔记之 通过Intent传递类对象(实现Serializable和Parcelable接口)
通过Intent传递类对象Intent传递类对象1、实现Serializable接口传递对象2、通过实现Parcelable接口传递对象Intent传递类对象1、实现Serializable接口传递对象Serializable 是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。至于序列化的方法也很简单,只需要让一个类去实现Serializable 这个接口就可以了。比如说有一个Person 类,其中包含了name 和age 、id、se原创 2021-11-17 10:39:22 · 764 阅读 · 0 评论 -
Android :数据存储方案学习笔记之 SQLite数据库存储
SQLite数据库存储SQLite数据库存储1、创建数据库2、升级数据库3、增删查改3.1、添加数据3.2、更新数据3.3、删除数据3.4、查询数据4、使用 SQL 操作数据库5、参考SQLite数据库存储特点:适用于存储大量复杂的数据1、创建数据库Android专门提供了一个 SQLiteOpenHelper帮助类对数据库进行创建和升级SQLiteOpenHelper需要创建一个自己的帮助类去继承它并且重写它的两个抽象方法,即 onCreate() 和onUpgrade()SQLit原创 2021-11-13 20:28:57 · 493 阅读 · 0 评论 -
Android :数据存储方案学习笔记之 SharedPreferences
SharedPreferences SharedPreferences概述参考SharedPreferences概述要想使用 SharedPreferences 来存储数据,首先需要获取到 SharedPreferences 对象。Android 提供了三种方法得到 SharedPreferences 对象:1、Context 类中的 getSharedPreferences()方法此方法接收两个参数,第一个参数指定 SharedPreferences 文件的名称,第二个参数指定操作模式,目前只原创 2021-11-12 08:09:46 · 507 阅读 · 0 评论 -
Android :数据存储方案学习笔记之 文件存储(openFileOutput、openFileInput)
文件存储 文件存储一、要实现的功能二、基本知识三、使用参考文件存储一、要实现的功能将输入框中的数据保存到指定文件名的文件中,实现数据的持久化;如果数据已经保存了,活动下次再启动的时候,就将保存在文件中的数据读取出来,显示在输入框中。二、基本知识1、利用活动生命周期中的一个回调函数onDestroy(),在活动被销毁之前,将数据写入到文件当中。例如按下返回键的时候,活动就被销毁,这个方法里面的代码就会被执行。2、利用TextUtils中的isEmpty(CharSequence str)方法可以原创 2021-11-10 08:49:39 · 1470 阅读 · 1 评论 -
Android :RxJava学习笔记之条件/布尔操作符
RxJava ——条件/布尔操作符 条件/布尔操作符1、all()2、3、4、5、6、7、8、9、参考条件/布尔操作符通过设置函数,判断被观察者(Observable)发送的事件是否符合条件1、all()作用:判断发送的每项数据是否都满足 设置的函数条件若满足,返回 true;否则,返回 false Observable.just(1,2,3,4,5,6) .all(new Predicate<Integer>(){原创 2021-11-07 09:41:21 · 435 阅读 · 0 评论 -
Android :RxJava学习笔记之Subject
ConstraintLayout Bias 1、Bias 定义,水平偏移和垂直偏移参考1、Bias 定义,水平偏移和垂直偏移参考1、https://blog.csdn.net/baidu_34012226/article/details/52438902?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_l原创 2021-11-06 17:39:48 · 449 阅读 · 0 评论 -
Android :RxJava学习笔记之过滤操作符
RxJava ——过滤操作符 过滤操作符1、根据 指定条件 过滤事件1.1、Filter()1.2、ofType()1.3、skip() / skipLast()1.4、distinct() / distinctUntilChanged()2、根据 指定事件数量 过滤事件2.1、take()2.2、TakeLast3、根据 指定时间 过滤事件3.1、throttleFirst()/ throttleLast()3.2、Sample()3.3、throttleWithTimeout () / debounc原创 2021-11-05 09:49:25 · 678 阅读 · 1 评论 -
Android :RxJava学习笔记之合并操作符
RxJava ——合并操作符 合并操作符1、concat() / concatArray()2、merge() / mergeArray()3、concatDelayError() / mergeDelayError()4、Zip()5、combineLatest()6、startWith() / startWithArray()7、count()参考合并操作符组合 多个被观察者(Observable) & 合并需要发送的事件,也就是是将两个或多个被观察者合并为一个被观察者,并向观察者传递事原创 2021-11-04 09:37:35 · 2464 阅读 · 0 评论 -
Android :RxJava学习笔记之转换操作符
RxJava ——转换操作符 转换操作符1、map2、cast3、flatMap4、concatMap4.1、concatMap和flatmap对比5、flatMapIterable6、scan7、buffer8、window9、groupBy参考转换操作符转换类操作符顾名思义,就是将上游(被观察者)发送的数据流进行转换成另外一种形式(观察者希望接收到的形式),从而使下游(观察者)能够正确的接受并作出响应。这里介绍map,cast,flatMap,concatMap,flatMapIterable,原创 2021-11-03 09:10:39 · 523 阅读 · 0 评论 -
Android :RxJava学习笔记之Single、Completable以及Maybe
Single、Completable以及Maybe Single、Completable以及Maybe概述1、Single2、Completable3、Maybe参考Single、Completable以及Maybe概述类型描述Observable < T >能够发射0或n个数据,并以成功或错误事件终止。Flowable< T>能够发射0或n个数据,并以成功或错误事件终止。 支持Backpressure,可以控制数据源发射的速度。Single&原创 2021-11-01 09:21:19 · 2913 阅读 · 0 评论 -
Android :RxJava学习笔记之创建操作符
RxJava ——创建操作符 创建操作符1、creat2、just3、from4、defer、interval 和 timer4.1 defer4.2 interval4.3timer5、range()参考创建操作符1、creat使用一个函数从头开始创建一个 Observable我们可以使用 create 操作符从头开始创建一个 Observable 给这个操作符传递一个接受观察者作为参数的函数,编写这个函数让它的行为表现为一个 Observable ——恰当地调用观察者 onNext、onE原创 2021-10-31 12:02:45 · 1063 阅读 · 0 评论