- 博客(32)
- 收藏
- 关注
原创 JetPack之WorkManager源码详细分析
本文对WorkManager进行了详细分析,仔细追踪流程,完成了对WorkManager各部件,各流程的完全说明
2020-07-01 16:08:49 1683 2
原创 WorkManager之SystemJobScheduler、SystemAlarmScheduler、GreedyScheduler三大调度器,源码流程详细解读
SystemJobScheduler的工作过程先看其构造方法,它会将我们传递进来的WorkManagerImpl 与context进行保存,并在它的重载方法里获取了系统服务jobScheduler,要了解jobScheduler,推荐一篇博文可以看看JobScheduler的使用,而另外一个参数SystemJobInfoConverter 则是用来将我们的workSpecs转化为JobInfo,这个JobInfo是jobScheduler需要的参数 ,用来描述任务的执行时间,条件,策略等一系列的行为。因
2020-07-01 14:23:53 1831 3
原创 JetPack之ViewModel最新源码详细分析
本文会基于最新版ViewModel使用方法与源码进行详细分析,从注册到实现ViewModel界面数据如何保存与管理全部涉及。**简介:**ViewModel是JetPack系列库之一,它用来对组件的界面数据进行管理,且当组件的状态发生改变时数据依然留存。优点:1.当所依赖组件的状态发生改变时,例如屏幕旋转等,界面数据不会发生改变2.实现MVVM架构的基础,在日常开发中,ViewModel就是MVVM架构的VM层,它相当于MVP架构的present,我们可以将业务逻辑以及数据交互的部分放入ViewM
2020-06-23 17:01:28 1445 4
原创 flutter webview滑动不响应
2.换了之后可能滑动还是有问题,且加以下手势识别不起作用。1.直接换flutter_inappwebview插件。3.然后将所有的手势识别都加入,此时滑动问题完美解决。
2023-06-06 16:32:21 1224 1
原创 Android 高工专业体系路线
自定义view分为以下方式。自定义组合控件,多个控件组合成为一个新的控件,方便多处复用。继承系统View控件,继承自TextView等系统控件,在系统控件的基础功能上进行扩展。继承View,不复用系统控件逻辑,继承View进行功能定义。继承系统ViewGroup,继承自LinearLayout等系统控件,在系统控件的基础功能上进行扩展。继承ViewViewGroup,不复用系统控件逻辑,继承ViewGroup进行功能定义。
2022-12-27 19:15:45 1166
原创 数据结构整理
1.数据逻辑结构可以划分为集合,数据结构中得元素之间除了同属于一个集合得相互关系外,没有其他关系。线性结构,数据结构中得元素存在一对一得相互关系。树形结构,数据结构中得元素存在一对多得相互关系。图形结构,数据结构中得元素蹲在多对多得相互关系。........................
2022-07-04 15:00:37 474
原创 flutter 使用image_picker错误提示Couldn‘t find meta-data for provider with authority com.xxxx
我出现这个问题的场景是因为,我的flutter混合开发项目插件化到了原生平台app,因为插件化平台的特殊性,导致在使用image_picker做拍照操作时,原生层使用了平台的进程去做拍照操作,但image_picker又存在于flutter项目插件,所以通过平台进程去使用image_picker是根本找不到的,即使通过对image_picker源码做强行将包名路径切换为flutter项目的包名路径也会因为进程隔离导致image_picker拍照的存放路径没有权限而失败。所以我这里使用了一个暂时的解决办法,那
2022-06-17 20:23:51 1298
原创 移动端网络知识
1.什么是网络在计算机领域中,网络是信息传输、接收、共享的虚拟平台2.什么是网络编程网络编程从大的方面说就是对信息的发送与接收,通过操作相应api,调度计算器硬件资源,并利用传输管道,进行数据交换的过程3.7层网络模型网络模型建立的原因:建立七层模型的主要目的是为解决网络互连时所遇到的兼容性问题,它的最大的优点是将服务、接口和协议这三个概念明确区分开来,服务说明某一层为上一层提供一些什么功能,节课说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务,这样各层之间具有很强的独立性,同时划分了网
2022-02-15 11:43:27 1411
原创 flutter原理知识面试整理
1.在移动端,一次完整的事件分为:按下、移动、抬起。当指针按下时,Flutter会对应用程序执行命中测试,以确定指针与屏幕接触的位置存在哪些组件,指针按下事件,被分发到由命中测试发现的最内部的组件,然后从那里开始,事件会在组件树中向上冒泡,这些事件会从最内部的组件被分发到组件树根的路径上的所有组件,只有通过命中测试的组件才能出发事件。Flutter中可以使用listener来监听原始触摸事件。2.Flutter 事件处理流程主要分为3步,首先是命中测试,当手指按下时会触发pointerDownEvent
2022-02-09 17:22:27 2512
原创 设计模式简单总结
1.工厂模式工厂模式属于创建型模式,它会定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到了子类进行,它主要解决了接口选择的问题,当我们需要明确计划不同条件下创建不同实例时就可以使用它。它的优点有:一个调用者想创建一个对象,只要知道其名称就可以,扩展性高,如果想增加一个产品,只要扩展一个工厂类即可,屏蔽了产品的具体实现,调用者只关心产品的接口,它的缺点有,每增加一个产品都需要增加一个具体的接口实现类,使得系统中类的个数增加。2.抽象工厂模式:抽象工厂模式是围绕一个超
2022-02-09 17:20:00 253
原创 gradle相关知识整理
Gradle知识学习:1.应用研发的周期:开发、编译、测试、发布2.gradle是什么:构建即将源代码生成可执行应用程序的过程,这个流程包括拷贝、编译、打包、签名、对齐、安装等,按照最原始的方式,开发人员需要手动、逐个执行这些步骤,浪费宝贵的编码时间,即使封装为一个脚本,依旧可能遇到由于开发环境不一致等因素而带来的各种兼容性问题。因此,开发领域引入了构建工具的概念,其定义为一个可编程的工具更准确的说是一个编程框架,它能够以可执行和有序的任务来表达满足需要的自动化过程,可自定义编译过程中的不同需求,常用的
2022-01-04 14:03:09 1423
原创 Flutter GetX框架状态管理源码原理分析
GetX状态管理优点性能:GetX 打包后得apk占用大小和运行时得内存占用少效率:语法简洁,并保持了极高得性能,极大缩短开发时间结构:可以将界面、逻辑、依赖和路由完全解耦,逻辑更清晰。生态:能够在Android、iOS、web、Linux、windows上用相同的代码运行。提高开发效率的插件:Getx_template:一键生成框架模板GetX Snippets:代码提示,模板代码状态管理:简单状态管理器(GetBuilder)、响应式状态管理器(GetX)GetX响应式状态管理
2021-12-02 15:47:05 3940
原创 Flutter 路由管理源码解析
一、介绍:路由在移动开发中通常指页面,路由管理就指的是管理页面之间的跳转,在flutter中,是通过一个栈的结构来对路由进行维护管理。路由管理也就是说在代码层面其实是对这个栈结构进行管理,其中路由入栈操作就相当于打开一个新的页面,放入这个栈结构中,路由出栈操作对应的是页面关闭操作,但是当一个APP中使用到页面很多时,如何更加有效合理的去管理各个页面之间的关系和跳转逻辑将变得极为重要。**路由:**在flutter中,一个路由中维护了与之相关的路由状态,路由页,以及该路由对应的标签数据以及指针位置等内容。
2021-11-26 14:23:02 2378
原创 flutter异常 Redeclaration
在与小伙伴同步代码得时候发生了一个异常具体表现为FlutterToastPlugin.kt: (11, 14): Redeclaration: FlutterToastPlugine: /Users/dma/development/flutter_share/android/app/src/main/kotlin/com/example/souqmubtath/FlutterToastPlugin.kt: (8, 7): Redeclaration: FlutterToastPlugine: /Use
2020-09-15 10:15:43 3134 3
原创 flutter之CupertinoTabBar属性分析
CupertinoTabBarCupertinoTabBar({ Key key, @required this.items, this.onTap, this.currentIndex = 0, this.backgroundColor, this.activeColor, this.inactiveColor = _kDefaultTabBarInactiveColor, this.iconSize = 30.0, this.bo
2020-08-21 16:09:01 1030 1
原创 flutter 之BottomNavigationBarItem属性分析
BottomNavigationBarItem BottomNavigationBarItem({ @required this.icon, this.title, Widget activeIcon, this.backgroundColor, })icon:类型:Widget描述:Item显示的图标title:类型:Widget描述:一般使用Text文本,item文字描述activeIcon:类型:Widget描述:被选中时显示的iconbac
2020-08-21 15:51:12 2259 1
原创 Flutter之AppBar属性分析
AppBar可用属性AppBar({ Key key, this.leading, this.automaticallyImplyLeading = true, this.title, this.actions, this.flexibleSpace, this.bottom, this.elevation, this.shadowColor, this.shape, this.backgroundColor,
2020-08-21 15:16:13 1925
原创 jetpack之lifecycle源码详细分析
*lifecycle介绍:*lifecycle是jetpack 库中的组件之一,它可以感知所依赖的activity与fragment的生命周期。jetpack 的出现,可以让程序更好的实现mvvm架构模式,而在mvvm 的架构模式中,view 视图层只做与视图相关的操作,业务逻辑不应该写在其中,在android 中继承于fragment与activity的子类通常作为视图层来看待。lifecycle可以将依赖于fragment与activity的生命周期的代码进行分离,使得更好的实现MVVM架构模式,降低
2020-06-19 17:34:38 2084
原创 greendao源码、流程、优点全面解析
greendao数据库框架是目前我经常在使用的框架,但一直没有真正的仔细的去研究,网上的一些资料感觉都没有总结全面,看完之后总是没有形成体系。所以在此自己总结一篇。greendao数据库框架的优点可以总结为:1.crud的性能高效2.支持数据库加密来保存敏感数据3.库的体积小4.可以进行同步和异步操作5支持内存缓存,提高查询性能6.代码自动生成,使用简单,无需关注实体类7.可以和r...
2019-12-27 17:09:41 717 1
原创 android四大组建之service
service:四大组件之一,可以在后台进行一些耗时操作。service生命周期:startService:onCreate——当service第一次创建时调用,之后使用startService则不会在被调用onstart——当service开启时调用onstartcommandonDestroybindService:onCreateonBind——与当前activity绑定...
2019-09-23 11:39:30 352
原创 四大组件之activity
activity:四大组件之一,负责用户与界面的交互,每一个activity都对应一个单独的window。acitivity的生命周期:正常启动下的生命周期: onCreate()——activity第一次创建的时候调用 onstart——activity创建完毕,可见但没有位于前台时 onResume——activity位于前台,可见并且可以进行交互 onPause——activit...
2019-09-23 10:40:38 362
原创 java抽象类详解
抽象类: 使用abstract修饰的类。接口与抽象类的使用动机:使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。特点:1.只能被当作父类继承使用,无法对其直接进行实例化。2.有抽象方法的类一定是抽象类。子类需要重写父类所有的抽象方法,若不想重写则子类也必须被定义为抽象方法。3.抽象类中可以有自己的成员方法和成员变量。4.抽象类可以有自己的构造方法。5.每个类只能继承一个...
2019-08-24 17:10:00 390
原创 什么是内部类,以及内部类的特点
**内部类:** 定义在一个类或者方法内的类称为内部类。**成员内部类:** 没有使用static修饰,可以有自己的访问修饰符。**局部内部类:** 定义在类的方法中,没有访问修饰符,只能访问外部方法final修饰的变量,作用域为当前方法。**匿名内部类:** 可以理解为没有名字的内部类,没有访问修饰符,没有构造器,匿名内部类只能被访问一次所以可以用匿名内部类来实现那些只被使用一次的类,减少不必要的类文件的创建。使用匿名内部类必须继承接口或父类,常用于接口回调。**静态内部类:** 定义在类
2019-08-23 16:55:48 1763
原创 String、StringBuffer、StringBuilder区别,从源码角度分析内部机制
Stirng: 字符串常量,内部使用final进行修饰,所以一旦初始化后就不可更改,每一次的改变其实都是创建一个新的对象并对其重新赋值。源码:public final class String implements java.io.Serializable, Comparable<String>, CharSequence 它实现了Serializable接口表示支...
2019-08-22 16:37:24 181
原创 java多态的特性与理解
多态:不同的对象使用相同的行为可以产生不同的行为结果。多态的表现形式:1.子类与父类之间的重写。2.类内部的重载。3.不同类对相同接口的实现。多态的优点:1.符合设计模式中的依赖倒转原则,针对接口编程,依赖于抽象而不是具体,降低了耦合度。2.提高了代码的扩展性,新增行为不会对原来的代码产生影响。3.提高了代码的灵活性,可以灵活的对产生相同行为的对象进行替换。....重写:...
2019-08-22 13:49:31 140
原创 int与integer的区别
int:是java中的基本数据类型,在内存中占用4个字节。integer:是int的封装类,它继承于number抽象类并实现了抽象类中的方法,实现了Comparable接口中的方法compareTo所以可以对integer类型的对象进行大小比较。public final class Integer extends Number implements Comparable<Inte...
2019-08-21 17:41:07 195
原创 分析“==”、“equals”和“hashcode”的区别
“==”:用于基本数据类型比较时比较的是内容,用于复杂类型比较时则比较的是它们的内存地址。**“equals”:**在没有重写equals的情况下比较的是内存地址,它是object类中的方法,用于复杂对象的比较,String对equals默认进行了重写。**hashcode:**是 Object类中的方法,主要用于集合中使用,将传递进来的数据使用hash计算后得出来的hash值可以散列到集合中的不同位置,减少碰撞的发生几率,提高性能。
2019-08-21 10:13:24 143
原创 更新包到androidx后提示Error inflating class android.support.constraint.ConstraintLayout
更新到androidx之后运行程序提示我根据指引导航到了原因是我从V7包更新到androidx之后,原来的setcontentview之中引用的布局文件的ConstraintLayout的引用路径发生了改变因此将android.support.constraint.ConstraintLayout更改为 androidx.constraintlayout.widget.Constrai...
2019-05-13 13:08:29 11558 1
原创 Process xxxx (pid xxx) has died的另外一种错误分析
今天发现程序运行半个小时之后会崩溃,并且在日志中没有发现具体的报错信息,找了网上的办法都不适用,经过自己努力的排查发现是因为本该屏蔽掉的handle消息发送代码没有屏蔽,频繁调用handle发送消息,并且消息没有在handle 内部进行处理所导致,屏蔽掉handle消息发送后程序能够正常运行。频繁创建消息并发送 Message message = handler.obtainMe...
2019-04-04 18:36:47 3106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人