Flutter状态管理4-flutter_bloc使用和原理学习总结 flutter_bloc今天发布了4.0.0版本,现关于其使用和原理做一个简单的总结。flutter_bloc官网:https://github.com/felangel/blochttps://bloclibrary.dev/#/flutterbloccoreconcepts?id=flutter-bloc-core-conceptspub.dev上的介绍,包括了多个Examples:...
Flutter中的一些知识概念总结 在学习Flutter一段时间后,有一些概念性的东西,还是打算写下来,记录一下。Widget、Element、RenderObject大家都知道Widget、Element、RenderObject,每个部分负责相应的功能,我们只需要写Widget就行,为什么还需要Element和RenderObject呢,这是因为Flutter为了在大量Widget时保证良好的性能,不能一直删除创建新的对象,...
Kotlin协程和在Android中的使用总结(七 一些使用协程的三方库) 文章目录1 依赖注入[Kodin](https://github.com/Kodein-Framework/Kodein-DI)2 图片加载框架 [Coil](https://github.com/coil-kt/coil/)3 权限申请4 网络请求5 数据库6 更多1 依赖注入Kodin实际上这部分跟协程没有什么关系,只是觉得这篇文章主要介绍一些Kotlin的三方库,所以将其纳入。如果...
Kotlin协程和在Android中的使用总结(六 通道Channel) ChannelDeferred对象提供了一种在协程间传递值的简便方式,Channel就是用于在协程间传递一个stream的值流。Channel有点类似于BlockingQueue,不同的是,BlockingQueue的put 和take 操作都是阻塞式的,而Channel的send和receive都是可挂起的非阻塞式。fun main() = runBlocking { val ch...
Kotlin协程和在Android中的使用总结(五 Collection、Sequence、Flow与RxJava对比(下)) 文章目录flow的扁平化flatMapConcatflatMapMergeflatMapLatestFlow exceptions使用try-catch捕获collector的异常flow中的任何异常都可以被捕获Exception transparencyFlow completionLaunching flowFlow and Reactive Streamsflow的扁平化假设现在有这样...
Kotlin协程和在Android中的使用总结(五 Collection、Sequence、Flow与RxJava对比(上)) 0 Collection和Sequence在Kotlin中表示多个值时,我们会使用集合Collection和序列Sequence来表示,现在说一下这两者的区别和使用注意事项。首选这两者的调用都会阻塞当前的线程。如果是在主线程调用,那就会阻塞主线程,可能会引起卡顿。关于Sequence操作符的一些基础知识点,中间操作符intermediate operator和末端操作符terminal o...
Kotlin协程和在Android中的使用总结(四 协程和Retrofit、Room、WorkManager结合使用) 文章目录0 设计一个全新Android app架构的思考1 Coroutines in Room & Retrofit2 在高阶函数中使用协程3 将协程和WorkManager结合使用4 关于协程取消和超时的处理Timeout超时控制5 关于测试用例的编写0 设计一个全新Android app架构的思考以前有看到过这样的一些文章,如果让你重新设计一个app,你会用什么架构,用哪些三方...
Kotlin协程和在Android中的使用总结(三 将回调和RxJava调用改写成挂起函数) 本文主要介绍以下,对于现有项目中的接口回调逻辑,和Rxjava中的订阅逻辑代码,修改成suspend挂起函数的形式。文章目录1 接口回调的改写(1)使用suspendCoroutine(2)使用suspendCancellableCoroutine2 RxJava的订阅回调转换成挂起函数总结:1 接口回调的改写一般接口回调的场景,我们都可以改成挂起函数的形式,比如网络接口的成功与失败的回调...
Kotlin协程和在Android中的使用总结(一 基础知识) 1 在Android中引入协程implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2’implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2’implementation “org.jetbrains.kotlinx:kot...
Kotlin协程和在Android中的使用总结(二 和Jetpack架构组件一起使用) 官网:https://www.kotlincn.net/docs/reference/coroutines/coroutines-guide.html一 协程的使用1. Android中引入implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3’...
Android Jetpack Compose总结 简介Jetpack Compose 是用于构建native UI的新方式,写法跟Flutter非常相似,对Flutter有了解的同学可以很快上手。官网:https://developer.android.com/jetpack/compose官方demo :https://github.com/android/compose-samples官方的介绍: https://developer....
Android开发实用工具汇总 本文记录一些比较实用的工具,包含但不限于Android Studio的介绍、UI相关的工具等等,遇到比较好的会不断更新。一个很容易生成Android中的material design风格的icon网址:https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html#foreground.type=clipart&...
Flutter与Android原生混合开发——EventChannel与MethodChannel的使用 在使用Flutter开发app时,会遇到跟Android原生系统API交互的情况,通常可以使用Flutter来写页面,复用原来已有的Android的逻辑(如自己的或者第三方的SDK),来加快开发进度。可以使用插件来解决,官网关于插件的开发介绍:撰写双端平台代码(插件编写实现)文中列出了一个完整的demo:注意:可在 /examples/platform_channel/ 中获得使用 Ja...
Java范型那些事(四) 在某些情况下,编译器会推断出通配符的类型,例如,列表可以定义为List<?>,但是在评估表达式时,编译器会从代码中推断出特定类型,此场景称为通配符捕获。看以下两个方法,其中test1方法中,将i中的一个元素取出后,再放入,由于编译器的类型推断机制,i.get(0)被推断为Object类型,报错信息如下:对于一个在其类型中含有通配符?的变量,比如这里的test1函数的参数lis...
Java范型那些事(三) 之前写了一些Java范型的文章,但是感觉自己还是一知半解,于是又回顾了一下,官网教程:https://docs.oracle.com/javase/tutorial/java/genericshttps://docs.oracle.com/javase/tutorial/extra/generics/index.html关于范型的一些基本知识,大家应该都有所了解,这里再记录一些东西。1....
Flutter应用——生命周期管理 Lifecycle Management Flutter应用中,有时候我们需要监听整个app的不同声明周期状态,然后做出相应的逻辑处理。Flutter中的生命周期状态在window.dart 中有定义enum AppLifecycleState { /// The application is visible and responding to user input. resumed, /// The applicati...
Flutter代码结构优化——functional_widget缩减Flutter代码嵌套层级 初学Flutter时,会觉得一个Flutter页面中,WIdget之间相互嵌套,层级会很深,不利于阅读,本文介绍一个第三方库 functional_widget,以减少WIdget的嵌套层级。这几天看了一些教程,稍微复杂点的页面中,如何来避免Widget层级的过度嵌套,其实很简单,就是分而治之,以官方的一个provider_shopper购物车页面为例 :上面是一个列表,中间一个间隔线,底下...
Flutter中的导航Navigation总结 在Flutter中导航到一个新页面,通常我们会使用Navigator.of(context).push()来处理,或者是调用pushNamed("\xxx"),pop()等 。但是这里有几个问题,需要使用到context,这就限制来导航的使用场景,必须要在一个Widget中;第二个问题是,如果在Widget中写导航相关的代码,那么就在UI层混入了逻辑层的代码,路由导航属于业务逻辑,这不利于...
Flutter中的依赖注入——get_it Flutter社区的一个library: get_it视频介绍:Flutter Dependency Injection For Beginners | Complete Guide视频对应的博文 :Dependency Injection in Flutter官网的介绍:Simple direct Service Locator that allows to decouple the ...
Flutter Architecture架构管理 Provider+get_it 由于Flutter中的状态管理问题,Flutter中有着ephemeral短时状态和app状态,且会因为业务需要,在两种状态之间做出转换,所以状态管理是个值得研究的问题。因此引出了架构管理问题,其实整个架构就是为了合理的管理状态而设计的。类似于Android中的MVC 、MVVM、 MVI、等架构,Flutter也有,一个包含各类架构的sample地址:https://github.com/b...
Flutter状态管理3-InheritedWidget 官网关于状态管理的一段介绍:Managing stateFlutter知识点: InheritedWidget上午中使用了InheritedWidget来管理状态,flutter_redux
Flutter中的BuildContext、Element、Key和RenderObject 学习Flutter不仅仅是学各Widget的使用,能堆叠出UI就行了,要多去学习底层的一些实现原理,尽量做到知其所以然。这也是区分程序员等级的一个参考指标。在学习Flutter过程中,对BuildContext、Key、Element、RenderObject不是很了解,搜索了一下,觉得有些博客写的还是不错的,主要是了解Flutter视图树的构建过程,希望大家都能多去看看Flutter | ...
Flutter学习资料汇总 主要资源:Flutter官网:https://flutter.dev/优达学城 https://classroom.udacity.com/courses/ud905Medium官网 :https://medium.com/flutterYoutube视频: https://www.youtube.com/flutterdevFlutter的一些第三方库,各种插件 https://pu...
Flutter中的Build方法为什么会在State中,而不在StatefulWidget中? 官网中build方法的文档地址:https://api.flutter.dev/flutter/widgets/State/build.html在学习写StatefulWidget的时候,就有这个疑问了,为什么要把build方法写在State中?为什么不是跟写StatelessWidget一样,直接把build方法写在StatelessWidget中呢?网上也有人有这样的疑问:链接找不到了...
Flutter状态管理2-ChangeNotifierProxyProvider 官方GitHub sample地址:provider_shopperChangeNotifierProxyProvider的使用1. 先看主类class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { // Using MultiProvider is conveni...
Flutter状态管理1-ChangeNotifierProvider的使用 关于Flutter中的状态管理,可以参考官网的介绍:Simple app state management中文网的介绍:简单的应用状态管理Flutter 官方的两个sample:provider_counterprovider_shopper先从简单的provider_counter说起1. 定义一个数据Model类,继承自ChangeNotifier/// Simplest pos...
Dart Language Tour 学习笔记2 ExceptionsDart 中的异常信息捕获处理:try { breedMoreLlamas();} on OutOfLlamasException { // A specific exception buyMoreLlamas();} on Exception catch (e) { // Anything else that is an exception p...
Dart Language Tour 学习笔记1 变量和内置的类型Final and const如果您从不打算更改变量,请使用final或const,而不是var或者一个类型。 final变量只能设置一次; const变量是编译时常量。 (Const变量是隐式final的。)final的顶级或类变量在第一次使用时被初始化实例变量可以是final的,但是不能是const的,且final的实例变量必须在构造函数前初始化;const修饰符不...
Dart语法基础2-资源介绍汇总 Flutter官网中Dart资源的链接:Bootstrap into DartLanguage tour包含Dart语法的最佳介绍,如强类型、闭包(lambda表达式)、函数库、lexical scoping、顶级函数、命名参数、async / await,等Library tourDart核心库的介绍,包括集合框架、异步、数学函数库、numbers、strings、JSON等Effe...
Dart语法基础1-类、构造函数 语法基础Dart的主函数名称为 void main (){ },也可以添加参数,main(List args)Dart里的变量、函数、getter和setter可以独立于类存在,main方法位于最顶层。Dart中的修饰符默认是public的,且没有类似public、private和protected的修饰符。在标识符前加下划线_ ,可以使得其变成private的,如下可以对变量...
Dart语法基础笔记(二) 接上一篇 Dart语法基础笔记(一)范型 GenericUsing collection literals(使用集合字面量定义List或者Map)List 和 map 字面量也是可以参数化的。 参数化定义 list 需要在中括号之前 添加 , 定义 map 需要在大括号之前 添加 <keyType, valueType>。 如果你需要更加安全的类型检查,则可以使用 参数化定义。...
Dart语法基础笔记(一) 官网地址:https://dart.dev/guides/language/language-tour中文网地址:http://dart.goodev.org/guides/language/language-tour#commentsFinal and const如果你以后不打算修改一个变量,使用 final 或者 const。 一个 final 变量只能赋值一次;一个 const 变量是...
Java Best Practices Guide 最佳实践汇总 Java Best Practices GuideA good programmer is one who write programs (not just code). It means writing the code units which are independent enough to be re-used in multiple ways, and still they rema...
Java Popular Tutorials热门教程汇总 CountDownLatch、CyclicBarrier和Semaphore什么时候使用CountDownLatchJava并发编程:CountDownLatch、CyclicBarrier和Semaphore
你真的知道这些Java语法基础吗 推荐阅读:1. Java:全面 & 清晰的 NIO 学习攻略2. Java多线程:神秘的线程变量 ThreadLocal 你了解吗?3. Java:那些鲜为人知的关键字volatile4. Java:这是一份全面 & 详细的 Synchronized关键字 学习指南...
Android中的高效数据结构 SparseArray 参考:ArrayMap 和HashMap的区别谈谈-使用SparseArray和ArrayMap代替HashMapAndroid 中的高效数据结构 其中 数据结构HashMap(Android SparseArray 和ArrayMap) 对性能对比做了实验,其文末的参考文章也可以学习一下参考的文章:Android内存优化(使用SparseArray和ArrayMap代替H...
Android中的gradle配置相关 1. gradle添加依赖 -- compile和implementation区别Android官网的描述:Add build dependenciesAndroid Studio3.x新的依赖方式(implementation、api、compileOnly)还再用compile依赖?那你就落后啦android gradle tools 3.X 中依赖,implement、api 指令...
Java的代理模式和动态代理 1. 关于代理模式的简单介绍,和动态代理的原理介绍,可以参考下文: java动态代理实现与原理详细分析 java的动态代理机制详解 2. 代理模式、动态代理的使用场景 详解java动态代理机制以及使用场景(一) 更多动态代理相关的内容,可以参考另一篇文章:Android AOP三剑客学习:APT, AspectJ, Javas...
Android AOP三剑客学习:APT, AspectJ, Javassist 目录 0. 基础1. APT2. AspectJ3. Javassist4. AOP0. 基础最近系统学习了一下注解,包括运行时注解,主要还是编译时注解APT的学习。首先是常用的有那些注解,Android support library中自带一些很有用的注解,详细的可以参考官方博客介绍:https://developer.android.com/studio...
Lifecycle-Aware Components生命周期组件 Lifecycle、LiveData 和 ViewModel学习资料汇总 目录1. 官网对于Lifecycle的介绍2. 却把清梅嗅的系列博客介绍3. Chaos Leong的深度介绍Lifecycle原理的文章4. 关于LiveData的使用5. 官网关于Transform LiveData的介绍1. Transformations.map()2. Transformations.switchMap()6. MediatorLiveDa...
[ 转]Java hashCode() 和 equals()的若干问题解答 转载自 : Java hashCode() 和 equals()的若干问题解答 本章的内容主要解决下面几个问题:1 equals() 的作用是什么?2 equals() 与 == 的区别是什么?3 hashCode() 的作用是什么?4 hashCode() 和 equals() 之间有什么联系? 第1部分 equals() 的作用equals...
用Kotlin封装一个Android中View的BackgroundDrawableBuilder 参考自:https://github.com/jaychang0917/SimpleText 一个自定义的TextView,对background的设置进行了简单封装。同时包含了一个ShapeBuilder,可以用于设置给所有View添加背景简化View的background创建,支持在xml和代码中设置backgroundDrawable, 代码中支持链式调用,或者DSL创建支持在...
用Kotlin封装一个Android中View的BackgroundDrawableBuilder 参考自:https://github.com/jaychang0917/SimpleText 一个自定义的TextView,对background的设置进行了简单封装。同时包含了一个ShapeBuilder,可以用于设置给所有View添加背景简化View的background创建,支持在xml和代码中设置backgroundDrawable, 代码中支持链式调用,或者DSL创建支持在...
用Kotlin封装一个自定义SpannableString 参考自:https://github.com/jaychang0917/SimpleText使用Kotlin进行了改写,保留了大部分功能,现不支持点击时的文字颜色和背景色(感觉用到的场景不多,所以就没加)Github上有更详细介绍 :https://github.com/chenyucheng97/SpannableStringBuilder欢迎star
Rxjava中的操作符学习笔记 1. Createcreate 操作符应该是最常见的操作符了,主要用于产生一个 Obserable 被观察者对象Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(@NonNull Observabl...
Kotlin笔记13-Java和Kotlin中的范型对比(二) 接上文: Kotlin笔记12-Java和Kotlin中的范型对比(一)Java中的范型类型,由于类型擦除的原因,无法在运行时访问范型T的类型。在oracle官网的文档介绍中,也有提到类型擦除和Reifiable Types: https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.7,其中提到Java也会保留一...
KTX 和 Kotlin android extension 都到底是个啥? 1. KTX是什么 Android官网对于KTX的介绍:https://developer.android.com/kotlin/ktxKTX 是被称为Android之光的 JakeWharton 写的,GitHub地址:https://github.com/android/android-ktx/A set of Kotlin extensions for Android app...
RxJava学习资源汇总 目录 来自扔物线大神的 介绍RxJava 1.x 和 2.x 的区别 :介绍RxJava 2.x 中常用操作符的:介绍使用场景的:Rxjava源码分析:解决Rxjava 内存泄漏的:介绍Rxjava在空间维度和时间维度上进行“事件驱动型”编程的文章:RxCache:RxActivityResultRxBindingRxPermission鸿洋大...
Java范型那些事(二) 接上篇博文《Java范型那些事(一)》参考oracle官网对于范型的介绍 :https://docs.oracle.com/javase/tutorial/extra/generics/legacy.html目录9. 使用通配符?的更多乐趣通配符捕获10. 使用范型改写旧代码(未使用范型的代码)9. 使用通配符?的更多乐趣在这一节,我们将考虑通配符的更多高级用法...
Kotlin系列之let、with、run、apply、also函数的使用 转载自:https://blog.csdn.net/u013064109/article/details/78786646 标签: Kotlin &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 常用技巧 目录:一、回调函数的Kotin的lambda的简化二、内联扩展函数之let三、内联函数之with四、内联扩展函数之run五、内联扩展...
Kotlin笔记12-Java和Kotlin中的范型对比(一) Kotlin中的范型和Java中的比较相似,可以参考我的关于介绍Java范型的文章 :Java范型那些事(一)Java范型那些事(二)Java范型那些事(三)Java范型那些事(四)在上述博文中,讲述了为什么Java要在1.5版本中引入范型,以及一些有关Java范型的基本知识点。如果把一个对象分为声明、使用两部分的话。泛型主要是侧重于类型的声明的代码复用,通配符则侧重于使用...
ViewModels and LiveData: Patterns + AntiPatterns 官网已经对ViewModel做了一些说明,比如不能在ViewModel中引入Activity的Context,但是还有很多注意事项,或者说idioms(惯用语法)来更好的使用ViewModel。本文参考自Google官网推荐的一篇博文:ViewModels and LiveData: Patterns + AntiPatterns先来一张官网给出的使用架构组件的整体描述图:理想情况...
ViewModel、ViewModelProviders、ViewModelStores官网学习总结 1. ViewModel官网介绍: https://developer.android.google.cn/topic/libraries/architecture/viewmodel官方API文档介绍:https://developer.android.com/reference/android/arch/lifecycle/ViewModel ViewModel类旨在以生命周期...
Kotlin学习资源汇总 有关Kotlin的好文已经越来越多,初学者实在没有必要去自己写一些文档,但是文档的搜集和分类还是要做,所以就有了本篇博客 本文不再更新,最新更新在 GitHub:https://github.com/chenyucheng97/Kotlin-Index欢迎大家star 在学习Kotlin语言的过程中,发现了很多不错的学习资源,包括基本语法、一些惯例或者好的用法、RxKot...
Java范型那些事(一) 参考资料:http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.htmloracle官网介绍:https://docs.oracle.com/javase/tutorial/extra/generics/intro.html同一系列:Java范型那些事(二)Java范型那些事(三)在JDK1.5 加入了范型,范...
Kotlin笔记11-类型检查和转换'is' and 'as' 在运行时可以通过 is 和 !is 来检测一对象的类型。智能的类型转换 Smart Casts在很多情况下,我们不需要在kotlin中显示地使用类型转换操作,因为编译器会追踪 is 检查和显示的类型转换,并会自动为不可变类型的值进行类型转换,如:fun demo(x: Any) { if (x is String) { print(x.length) // x...
Kotlin笔记10- Destructuring Declarations 解构声明 参考官网对于解构声明的介绍:http://kotlinlang.org/docs/reference/multi-declarations.html 借助于解构声明的语法,可以很方便的将一个对象解构成几个变量,比如:val (name, age) = personprintln(name)println(age)解构声明会创建相应个数的变量,编译为以下代码:val na...
Kotlin笔记9-Inline functions 内联函数 和 noinline crossinline修饰符 目录一、 Inline functions二、noinline三、Non-local returns四、Reified type parameters 具体参数类型五、内联属性 Inline properties (since 1.1)一、 Inline functions参考官网对于Inline functions的介绍:http://kotlinlang.org/...
Kotlin笔记8-Higher-Order Functions and Lambdas 高阶函数和Lambda表达式 目录1. Higher-Order Functions 高阶函数2. function types 函数式类型3. 实例化函数式类型 Instantiating a function type4. 调用一个函数类型变量 Invoking a function type instance5. Lambdas表达式和匿名函数Anonymous Functions(1)Lambd...
Kotlin笔记7-Delegation 和 Delegated Properties 一、Delegation 类的代理代理模式被证明是实现继承的一个很好替代方案,代理模式使得我们可以用聚合来替代继承,将代理和真实实现分离开来,以达成解耦的目的。Kotlin对代理模式内置支持,且零模版代码化。下面代码中代理类Derived通过实现Base接口,把其所有public的成员代理给一个指定的对象binterface Base { fun print()}cla...
Kotlin笔记6-Object Expressions and Declarations 对象表达式和声明 目录 1. Object Expressions 对象表达式2. Object declarations--Kotlin中的单例模式3. Companion Objects 伴生对象1. Object Expressions 对象表达式在Java中,有时候需创建一个已有的类的对象,但是需要对该类做一点修改,又不希望明确定义一个子类,这时可以使用匿名内部类,形式如下:n...
Kotlin笔记5-Data Classes数据类、Sealed Classes密封类、Nested Classes嵌套类、Enum Classes枚举类 目录1. Data Classes数据类(1) copy()函数(2) 数据类的解构(3) 标准数据类 Pair 和 Triple2. Sealed Classes密封类3. Nested Classes嵌套类4. Enum Classes枚举类1. Data Classes数据类数据类的作用主要就是用来存储数据。在class类名前用data修饰符data...
Kotlin笔记4-可见性修饰符和扩展函数 参考自官网介绍:http://kotlinlang.org/docs/reference/extensions.html 1. Visibility Modifiers 可见性修饰符可见性修饰符有四种:private, protected, internal and public,默认是public可以用于修饰类、伴生对象object、接口、构造函数、一般函数、属性和其setter...
Kotlin笔记3-类、属性(成员变量)和接口 目录一、 类1. 类的定义2. 类的构造函数3. 类的继承和方法、属性的复写4. Interfaces接口一、 类1. 类的定义通常如下所示:class Invoice { ... }可以省略参数和函数体,最简单形式如 : class Empty 但是目前还不知道这样定义的类有什么应用场景。2. 类的构造函数其中主构造函数primary c...
Kotlin笔记2-操作符和扩展方法 1. kotlin的操作符可以重载,在方法前面加 operator 关键字,如下面的重载 + 运算符data class Counter(var index: Int)operator fun Counter.plus(increment: Int): Counter { return Counter(index + increment)}fun main(args: A...
Kotlin笔记1-变量和流程控制 历史:2011年7月,JetBrains推出Kotlin项目 2016年2月15日,Kotlin V1.0发布 2017年 Google I/O大会,Kotlin成功官方Android开发语言。建议学习网站:kotlin中文网: https://www.kotlincn.net/ 官网: http://kotlinlang.org/ 官方在GitHub上的文档说明:https://gi...
Android中常见的内存泄露及解决办法汇总 内存泄露就是指该被GC垃圾回收的,由于有另外一个对象仍然在引用它,导致无法回收,造成内存泄露,过多的内存泄露会导致OOM。 android中的内存泄露通常是Activity或者Fragment的泄露。下文分析以Activity展开,Fragment同理。1. 非静态内部类、匿名内部类2. 静态的View3. Handler4. 监听器(各种需要注册的Listener...
Activity的启动模式,你真的了解并会用吗? activity的launchMode是一个基本知识点,四种模式大家应该也都很熟悉了,但是关于这几个模式,为什么要如此设置,应用场景是什么,可以用来做些什么,是本篇博文要总结的。首先介绍一下四个模式:1. standard &amp;emsp;&amp;emsp;默认的launchMode,会在和启动它的activity存在于一个Task中,多次启动,会创建多个实例...
Android 自定义View 总结 1. 自定义属性2. 重写onMesure3.重写onDraw4. 重写onLayout 自定义View入门还是很简单的,但是很少有程序员能做好它,因为涉及的面太广,网上经常有写文章标题是一篇就能搞定自定义View的,简直是too young too simple……可以说自定义View是从入门到懵逼,哈哈,其实没那么恐怖,满满积累就好了。 自定义View可以分为...
Android 事件分发,你真的了解吗? android中的事件分发,可以说是面试经常被提及,日常开发中也偶尔会遇到一些事件冲突,弄清楚整个事件分发的流程,是一个基本功,作为搬砖的码农,基础还是要打牢固。 其实网上关于事件分发的文章已经很多了,但是自己总结一下,印象总会深刻一点。 推荐一篇觉得介绍很详细的博文:安卓自定义View进阶-事件分发机制原理 先介绍一下事件分发相关方法,X表示不含有该方法: To...
Android动画大合集 android中的动画实现方式繁多,在项目中也经常用到动画,网上有很多人也都进行了一些总结,但是感觉还是零零散散,自己总结一下才能加深印象,以后有时间了,也可以从各个分类里进一步去补充完善。如果喜欢看Google官方英文文档的,可以直接移步Animations and Transitions一、View Animation1、Tween Animation 补间动画2、Fram...
Android中的观察者模式(一) 引用《Android源码设计模式》一书中对观察者模式的总结:优点:观察者模式主要的作用就是对象解耦,将观察者和被观察者完全隔离,只依赖于Observer和Observable的抽象,可以增强系统的灵活性、可扩展性。缺点:强调内容但是观察者模式也有缺点,就是没有彻底解耦,仍然需要依赖抽象,并且Java中消息的通知默认是顺序执行,一个观察者卡顿,会影响整体的执行效率,在这种情况下,一般考虑采用...
Java参数传递方式---值传递还是引用传递 最近偶然看到一篇博客,你真的理解Java的按引用传递吗?然后,看了一下文中的几个例子,确实一开始,自己做错了,虽然用Java已经有四年时间了,但是还是发现自己没有彻底理解清楚,到底是值传递还是引用传递。首先,明确一下,什么是值传递,什么是引用传递。Java中的值传递:Java中的基本数据类型,传递给方法形参时,是直接将值传递过去的,准确的说,应该是将值copy了一份,传递给了形参。...
单例模式--需要计划生育的类 单例模式应该是应用最广的一个设计模式了,在以往的工作中,也经常遇到单例类,下面做个总结。一 、为什么要用单例,或者说什么场景下要用单例1.为了避免产生多个对象消耗过多的资源,例如访问IO和数据库等资源,这时要考虑使用单例模式 2.某种类型的对象应该只有一个,比如我们会写个Cache类,为了保持数据的统一,只能有一个类 3.需要频繁创建和销毁对象时,为了节省性能销毁,要使用单例...
面向对象的6大原则 最近在看设计模式相关的书籍,第一章一般都是介绍面向对象的6大原则,看了两遍之后,结合自己这几年的开发经验,做了以下总结,主要还是给自己看。网上也有写的不错的博文,推荐如下:https://www.cnblogs.com/qifengshi/p/5709594.html1.单一职责原则–优化代码的第一步单一职责原则,顾名思义,就是在划分一个函数,或者一个类时,我们都会根据具体的业...
RxJava使用场景小结 取数据先检查缓存的场景取数据,首先检查内存是否有缓存 然后检查文件缓存中是否有 最后才从网络中取 前面任何一个条件满足,就不会执行后面的final Observable<String> memory = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(S
给 Android 开发者的 RxJava 详解 转载自:http://gank.io/post/560e15be2dca930e00da1083 作者:扔物线 前言我从去年开始使用 RxJava ,到现在一年了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『
Android中MVP架构总结(二) 在上一篇文章中,我们介绍了MVC和MVP的一些基本写法,文末也介绍了使用MVP可能会存在的问题,本文就介绍如何处理那些问题,并对MVP架构做一个简单的封装。额,本来打算再亲自写一下,单由于时间原因,大家可以参考以下两篇文章,作为参考。参考链接: 浅析如何高效的使用MVP干货 | MVP模式在携程酒店的应用和扩展最后,附上一个关于MVP的插件,方便我们在Android Studio中的代码编写。
Android中的MVP架构总结(一) MVC 、MVP 、MVVM 这些开发框架相信大家都已经听说并或多或少的用过了,在项目中,我也用到了MVP开发模式,在此结合网上一些介绍,做一个关于MVP的总结。一 、android中的MVC是什么?存在什么问题?网上关于MVC是什么的图片分析不少,但是看到一句话:自古图片留不住,总是代码得人心,哈哈,那就上实际点的代码,这里应用了参考文献中的代码。看样子很符合MVC的架构, Model : H
Android中使用注解来代替枚举类的方式 Android中使用注解来代替枚举类的方式记得我刚开始写代码的时候,在一些场景中还不会利用枚举类enum ,会经常用数字太代替,比如:switch (type) { case 1: //1代表。。。。。 fun1(); break; case 2: //2代表。。。。。 fun2(); break;
Android 7.0新特性--Data Saver Data Saver (Android Development Patterns S3 Ep 6)Youtube视频链接: https://www.youtube.com/watch?v=H-9xKmuwawg&index=6&list=PLWz5rJ2EKKc-lJo_RGGXL2Psr8vVCTWjMData Saver目的:加强用户对设备上app数据使用的控制,以节省用户的数据流量,所以开发
Android 7.0 新特性--Direct Boot Direct Boot (Android Development Patterns S3 Ep 8)官网视频链接: https://www.youtube.com/watch?v=fb2Zwmc3Sp4官网博客介绍链接: http://android-developers.blogspot.com/2016/04/developing-for-direct-boot.html?utm_campa
Java8 Default Methods和Static Methods 详细介绍 Java8 以前的interface接口机制中,接口中的方法不能有具体的实现,全部要为空方法,实现类必须全部实现相关的方法。但若上层接口需要做改变的时候(如增加新的空方法),下层接口就需要实现新增的方法,在某些情况下,变得不灵活,Java8接口新增default方法,可如下定义:public interface SomethingIsWrong {default void aMethod(int
Java 8 Lambda表达式详细解析(一) Java 8 Lambda表达式详细解析(一)Java 8开始引入Lambda表达式。官网介绍: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html匿名内部类的介绍: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclass
Firebase App Indexing 功能添加 Firebase App Indexing官方网站: https://firebase.google.com/docs/app-indexing/文中的测试资源网站:http://www.hikyson.cn http://www.hikyson.cn/first.html/引用官方的介绍(增加博文长度。。。):Firebase App Indexing(其前身为 Google App Indexi
Cannot resolve symbol'R'产生的原因和解决方法 最近遇到一个奇怪的问题,在Windows系统上使用Android Studio,一次修改后,文件中所有的R都被标红了,提示Cannot resolve symbol’R’, 如下图所示:但是R文件确实是存在的,只是提示找不到R文件而已,导致整个代码文件中全是错误,但是还是能正常编译运行。试过 Clean ReBuild 重启android studio, 试过更新buildToolsVersion,
两种Android判断view是否部分被遮挡(或者移出屏幕)的方法 部分内容参考http://blog.csdn.net/peidonghui/article/details/49583263,在此对原作者表示感谢在某些需求下,需要判断某一个View是否被遮挡,比如ListView的headerView中某一个View在ListView向上滑动到开始不可见时,在页面顶部固定显示一个View。在刚开始时,处理方式是在ListView的on