自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 秒懂【Jetpack】WorkManager

一、Worker 任务的执行者,是一个抽象类,用于指定需要执行的具体任务,需要实现doWork() 这一个方法,它是执行在一个单独的后台线程里的。所有需要在后台执行的任务都在这个方法里完成。 doWork()函数的返回值:Worker.Result.SUCCESS:任务执行成功。 Worker.Result.FAILURE:任务执行失败,与其串联的Worker2将不会执行 Worker.Result.RETRY:任务需要重新执行,如果出现这个返回结果,就需要与Wo...

2020-09-14 18:32:33 233

原创 Flutter-ScrollView滑动置顶bug

1.需求有这样的一个需求,上面AppBar+护理单卡片+TabBar(需要置顶)+TabBarView2.开发3.bug问题一:pinned的header问题。 下面的listView可以滑到pinnedWidget的底部去,需要再pinnedWidget的下方。问题二:body里面的TabBarView列表滚动同步,互相影响。page1滑动了,切换到page2,发现page2不在顶部,也滑动了。...

2021-12-14 09:30:13 2145

原创 Studio升级白狐

Arctic Fox | 2020.3.1升级了Gradle 7.0.2,不支持直接导入本地aar/jar.以前可以这样将aar/jar放入module下的libs文件夹下。dependencies {api fileTree(dir: 'libs', include: ['*.jar','*.aar'])}现在如何解决?新建一个module专门存放本地aar/jar文件。然后一个aar必须有一个build.gradle对应配置。setting.gr...

2021-09-18 08:56:23 176

原创 studio相关问题

1打包报错

2021-07-19 13:51:08 92

原创 Flutter基础之循环语句

循环语句

2021-05-25 18:15:46 326

原创 Flutter基础之数据类型

数据类型

2021-05-25 18:13:36 128

原创 Flutter基础之关键字

关键字

2021-05-25 10:49:06 782

原创 Gradle

task创建常用方式task myTask1 { doLast { println "doLast in task1" }}task myTask2 << { println "doLast in task2"}//采用 Project.task(String name) 方法来创建project.task("myTask3").doLast { println "doLast in task3"}//采用 TaskCon

2021-04-28 09:29:02 44

原创 Studio 模板

注释模板1打开设置2 创建user3 在user下面创建③中java要选Declaration,Kotlin要选top-level4 使用在class上面输入cc就可以生成模板了

2021-03-30 10:47:54 61

原创 setRetainInstance(true)你知道吗

在Activity中加入一个Fragment,设置一个按钮,切换屏幕public class SetRetainInstanceAc extends AppCompatActivity { private static final String TAG = "SecondActivity"; private SetRetainInstanceFragment fragment; @Override protected void onCreate(@Nullable B

2021-03-16 15:51:42 697

原创 三星我服了

有个奇怪得问题,我之前代码是调用知乎得相册选择,后面改了改成自己写得。这个Activity中没有任何关于知乎得代码,然后使用三星手机运行,第一次安装,第一次点击按钮,还是打开得知乎得页面,第二次之后就好了,执行得是我自己写得页面。而且只有三星手机是这样。各位大佬有没有解https://www.sohu.com/a/373733525_114877...

2020-12-31 12:14:58 74

原创 Glide加载居然有这样的问题

Glide加载图片,image宽是match_parent,通过listener监听得到的Drawable的宽度有时候居然大于屏幕宽度,图片显示正常。暂时不知道为什么,手机:三星Note 10+ 5G 型号:SM-N9760,有人知道吗?

2020-12-19 09:55:56 109 1

原创 HttpDns

DNS:是网络请求的第一步,默认我们使用运营商的LocalDNS服务,解析慢(有数据统计,在这一块 3G 网络下,耗时在 200~300ms,4G 网络下也需要 100ms)还有更严重的问题:DNS劫持、DNS调度不准确(缓存,转发,NAT)导致性能退化等。想优化,最简单成熟的方案就是使用HTTPDNS浏览器访问1 浏览器自己的缓存------2 计算机系统Host文件缓存 --------- 3 路由器缓存 -------- 4 ISP(服务商)DSN缓存 ------ 5根域名服务.

2020-11-16 16:52:14 156

原创 View刷新的小知识

view.requestLayout()调用的时ViewRootImpl.requestLayout() ---- View 三大流程view.invalidate()invalidate则是刷新当前View,使当前View进行重绘,不会进行测量、布局流程view.postInvalidate()跟invalidate一样时刷新当前View,可以再非ui线程中刷新...

2020-11-06 17:44:10 76

原创 ViewPager你还不懂?

FragmentPagerAdapter和FragmentStatePagerAdapter区别对滑动过去的页面是否销毁:例如:依次从左向右有fragment1,fragment2,fragment3三个页面FragmentPagerAdapter在滑动到fragment3时,fragment1会依次调用onPause()、onStop()、onDestroyView(),再向左滑动到fragment2时,fragment1会调用onCreateView()、onActivityCreated()

2020-11-06 12:22:06 74

原创 Scroller&&VelocityTracker

一、VelocityTrackerVelocityTracker是根据我们手指触摸事件,计算出滑动速度的工具类,Api比较简单获取VelocityTracker对象static public VelocityTracker obtain()recycle() // 回收VelocityTracker对象clear() // 重置VelocityTracker回其初始状态传入触摸事件,才能之后调用computeCurrentVelocity正确的得到当前速度。...

2020-10-27 15:13:27 253 1

原创 监控RecyclerView有效曝光数据

前言Android实现埋点统计。1、需求1.首页信息流中的卡片产品,曝光2秒以上、并且一个卡片必须至少展示一半在屏幕上才算有效3.同一页数据上下来回滑动,只统计一次,不做重复曝光4.刷新数据之后,如果是同一个产品,需要再一次曝光。2、分析首先分析Activity中的RecyclerView。1.recyclerView滑动过程中,满足条件的要曝光2.返回页面要曝光。3.点击item进入产品详情需要曝光 进入产品页到点击之前的4.点home键5.熄屏

2020-10-14 18:31:29 1411 1

原创 数组链表存储结构

数组、链表、二叉树、HashMap数组和链表1、数组是将元素在内存中连续存放。  链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。2、数组必须事先定义固定的长度,不能适应数据动态的增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;  链表动态地进行存储分配,可以适应数据动态地增减的情况。3、(静态)数组从栈中分配空间,对于程序员方便快速,但是自由度小;  链表从堆中分配空间,自由度大但是申请管理比较麻烦。黄色数组,...

2020-09-18 11:19:13 3120

原创 一分钟读懂设计模式--建造者模式

使用场景当一个对象参数很多,显然通过构造函数创建不合适,或者设置参数顺序运行执行结果,参数是多变得,可以使用建造者模式,链式调用,灵活性高。public class BGDrawable { private final Builder builder; private BGDrawable(Builder builder) { this.builder = builder; } public Drawable drawable() {

2020-09-11 10:09:16 123

原创 一分钟读懂设计模式--代理模式

静态代理动态代理

2020-09-11 09:55:20 102

原创 一分钟读懂设计模式--观察者模式

使用场景一个状态改变,需要同时改变其他对象的状态,而且不确定是多少个,也不知道其他对象是谁优点:观察者与被观察者抽象解耦缺点:程序中包括一个被观察者和多个被观察者,开发和调试比较复杂,而且Java中的消息的通知默认是顺序执行的,一个观察者的卡顿会影响整体的执行效率。在这种情况下,一般考虑采用异步的方式。//被观察者接口public interface Subject { void registerObserver(Observer observer); void r

2020-09-10 18:26:52 92

原创 一分钟读懂设计模式--责任链模式

使用场景责任链一般用于处理流程节点之类的实际业务场景中。责任链主要重在责任分离处理,让各个节点各司其职。缺点:责任链如果很长,调试比较麻烦。比如请假申请,组长只审批小于2天的假,否则交给主管审批,主管只审批小于5天的假,否则交给经理审批,由经理做决定。//抽象 审批人,public abstract class Approver { //true 审批通过,false 审批驳回 public abstract boolean approve(int days);

2020-09-10 17:42:36 128

原创 一分钟读懂设计模式--适配器模式

使用场景:需要使用已有的功能,但又不满足现在的需求。一、类适配单继承,只能适配一个可以置换被适配者的方法。//被适配者public class Adaptee { public void specificRequest() { System.out.println("被适配的"); }}//目标接口public interface ITarget { void request();}/** * 类适配器,继承被适配的类,同时实现

2020-09-10 16:26:36 100

原创 一分钟读懂设计模式--策略模式

一、使用场景1、多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。策略模式:优点:统一所有的算法,行为,避免客户端再去些复杂的算法或行为 缺点:客户端必须知道所有的策略,并自行选择策略,也就是说必须知道算法,行为规则,根据自己去选择。旅游为例子,可以做火车,飞机...

2020-09-10 16:14:42 116

原创 一分钟读懂设计模式--工厂模式

一、简单工厂模式1具体的工厂类有一个create的方法,利用if/switch返回具体产品2create方法通常时静态,所以也叫静态工厂。缺点:扩展性差,要增加一个产品,还需要修改工厂类方法 不同产品需要不同额外的参数时,不支持。//面条,最好都用接口public interface INoodles { //描述面条的 void desc();}public class LZNoodles implements INoodles {...

2020-09-10 15:28:40 126

原创 一分钟读懂设计模式--单例模式

一、使用场景单例模式只允许创建一个对象,因此节省内存,加快对象访问速度。1.需要频繁实例化然后销毁的对象。2.创建对象时耗时长,耗资源,又经常用到的对象。3.频繁访问数据库或文件的对象4.工具类对象二、懒汉式在类加载的时候不被初始化不加synchronized线程不安全,加synchronized保证线程安全,但是效率低,多数情况下不需要同步。private static SingletonUtil instance;//线程不安全public stati

2020-09-10 14:33:02 144

原创 被你忽略的java基础

Java执行顺序加载验证准备:为静态变量分配内存并设置初始值(数据类型的默认值而不是实际赋的值),解析初始化:给静态变量赋定义的值,执行静态代码块如果类已经被加载了,则静态代码块和静态变量就不会重复执行,再创建类对象时,只执行与实例相关的变量初始化和构造方法1.new 创建实例: A a = new A();2.调用静态变量: int a = A.a; / A.a = 100; ----初始化了静态变量,静态代码块3.调用静态方法: A.get();

2020-09-10 11:59:24 81

原创 List、Map

Collection |_ Set |_ List |_ Vector |_ Stack |_ ArrayList |_ LinkedListList1.List中元素有序、允许重复的元素,Set中的元素无序、不可重复的元素。2.Vector、ArrayList是以数组形...

2018-08-17 11:39:14 141

原创 studio 打包

在AS中新建modle,类型为android-library主项目中引用该module,编写module代码,编写完之后,module中build.gradle//Copy类型task exportJar(type: Copy){ //删除存在的 delete 'release/circlewheel.jar' //设置拷贝文件 from('build/inter...

2018-06-05 14:18:15 150

原创 Json解析

一、Android原生解析1.最简单的JSON对象{key:value,key:value }    String jsonStr = "{name:ywh,age:18}";    JSONObject obj = new JSONObject(jsonStr);    String name =obj.getString("name");    String age = obj.getStri...

2018-04-10 21:17:41 140

翻译 Activity四种启动模式

在一个项目中会包括多个Activity,系统中使用任务栈来存储创建的Activity实例,任务栈是一种“后进先出”的栈结构。举个例子,若我们多次启动同一个Activity。系统会创建多个实例依次放入任务栈中。当按back键返回时,每按一次,一个Activity出栈,直到栈空为止。当栈中无不论什么Activity。系统就会回收此任务栈。上面这个样例中的Activity并没有设置启动模式,你会发现多次...

2018-03-01 21:22:12 174

空空如也

空空如也

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

TA关注的人

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