5 xlh1191860939

尚未进行身份认证

一个android小菜鸟

等级
TA的排名 4w+

Kotlin学习系列之:委托(Delegate)

1.引入:委托作为一种传统的设计模式,在Java中要想实现这种设计模式,就需要自己进行类的结构设计来实现。而在Kotlin中,提供语言层面上的支持,我们可以通过by关键字很轻松就能实现。2.类委托(classdelegate) 自己动手实现委托: interfaceServerApi{funlogin(username:String,password:S...

2019-08-15 16:28:10

理解设计模式之:状态模式

1.定义:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。2.对状态模式的理解:状态模式中的行为是由状态决定的,不同的状态下有不同的行为。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。3.状态模式中的角色:Context:环境角色,定义客户感兴趣的接口,维护一个State子类的实例,这个实例定义了对象的当前状态 State:抽象状...

2019-08-13 19:22:34

Kotlin学习系列之:运算符重载(operator overloading)

1.引入:运算符重载,最初接触到这个概念是在C++里,Java中是没有的,取而代之的是通过特定接口来实现,比如进行排序比较大小时,我们可以实现Comparable接口。而Kotlin中,又重新支持该特性,因为这样会显得更加直观。2.如何实现运算符重载: 方式一:在类内定义,以成员方法(member)的形式 比如,我们定义一个Point类: dataclassPoint(va...

2019-08-08 21:09:10

Flutter和Dart系列十:Json序列化

在前一篇我们已经可以在Flutter中同服务器进行交互了,但是那时我们是通过String来接收的,即可以拿到json格式的数据,那么怎么来解析成实体对象呢?1.手动解析:借助于dart的内置库(dart:convert)dart:convert中有俩个top-levelfunction:jsonDecode()、jsonEncode(),分别用来解析json和生成json。给定一段...

2019-08-06 10:26:51

Kotlin学习系列之:协程(二)

在系列一中,我们已经对协程有了初步的了解,我们在此篇继续。前面我们是通过GlobalScope.launch{}这个协程建造器来创建协程的,它的特点就是: Launchesanewcoroutinewithoutblockingthecurrentthread. 即不会阻塞当前的线程的运行。我们再来接触一个不一样的协程建造器:runBlocking{} ...

2019-08-01 16:57:13

Kotlin学习系列之:协程(一)

1.协程:Coroutine2.如何去理解协程:可以视为轻量级的线程 我们可以回顾一下什么是线程。从操作系统原理的角度来讲,进程是资源分配的基本单位,而线程是调度的基本单位,也就是说线程实际上是系统级别的,它运行与否是由操作系统决定的。从Java语言层面上讲,我们可以通过newThread().start这种形式去启动一个线程,我们可以查看Thread类的源代码: publi...

2019-07-20 23:32:33

Flutter和Dart系列九:简单的网络请求

与其说是Flutter的网络请求,倒不如说是Dart的网络请求。实际上这块是对系列八第5点的一个复习,我们直接看代码: 在.yaml文件中添加http依赖,然后执行Packagesget dependencies:flutter:sdk:flutterhttp:^0.12.0+2 新建一个api.dart文件 import'package...

2019-07-15 20:45:19

grpc in Android

最近公司客户端同服务器的交互方式都换成了grpc,什么是grpc呢?我们在以后再去了解,此篇的目的就是带大家了解在android中如何去使用grpc.grpc-java的github地址:https://github.com/grpc/grpc-java。大家可以去浏览一下里面的文档说明,不用动手。 对于Android程序员,我们需要重点关注的是:https://grpc.io/docs...

2019-05-07 16:03:17

Flutter和Dart系列之八:路由

截至目前为止,我们的Widget都是在一个页面上实现的。对于一个App而言,不可能只有一个页面。那么在Flutter怎样实现页面间的跳转呢? 启动一个新的页面:Navigator.push(),类似Android中的startActivity classMyAppextendsStatelessWidget{@overrideWidgetbuild(BuildC...

2019-03-15 17:58:30

final关键字在Android和Java中使用总结

final作用于类上:表示该类不可被继承 某些类在设计的时候,可能出于安全的考虑,不希望被继承,例如String类。final类中的属性和方法可以是final或者非final,但是由于不能被继承,也就意味着final类中的方法都是final的,当然你也可以显式去指定。在《EffectiveJava》一书中,有句名言“designanddocumentforinheritance...

2019-03-14 13:35:06

Flutter和Dart系列七:Column和Row

对于线性的布局排列,Android中使用的是LinearLayout,至于是横向还是纵向,则是通过orientation属性来指定的,orientation=vertical表示纵向线性,orientation=horizontal表示横向线性。在Flutter中,将这两种线性布局分别用Column和Row来表示。 Column:orientation=vertical voidma...

2019-03-12 12:30:46

DiskLruCache的源码分析

如何拿到一个DiskLruCache的对象? 通过DiskLruCache的open方法,因为它的构造是私有的,所以你不是能够直接new的。open方法有四个参数: directory:磁盘缓存的路径 appVersion:app的版本号,这个地方看清况传入,如果你想要当app升级时,之前的缓存失效,那么这个地方你就可以传入当前app的版本号;否则的话,缓存在app升级时仍然保留,...

2019-03-11 14:49:21

基于《Android插件化开发指南》第5章对于"欺骗AMS"的思考

在我们初学Android阶段经常会遇到一个异常:Unabletofindexplicitactivityclassxxx;haveyoudeclaredthisactivityinyourAndroidManifest.xml?异常信息提示的很清楚,原来我们在start一个新的Activity时,忘记在AndroidManifest.xm...

2019-03-07 13:54:46

基于《Android插件化开发指南》第4章对于ActivityManager hook的思考

最近在读包建强老师的《Android插件化开发指南》一书,在读到第4章对于ActivityManagerhook时,有点小启发。先看hook的代码(基于Android9.0源码,兼容Android7.0之前的版本代码需改动):publicclassHookHelper{publicstaticvoidhookActivityManager(){...

2019-03-04 16:35:51

Flutter和Dart系列五:类和对象

Dart是一门面向对象的语言。和Java一样,它有个超级父类Object,所有的类都直接或间接继承该类。 定义一个类: classPoint{numx=0,y=1;} 编写main方法来使用这个类: voidmain(){varpoint=Point();//创建了一个Point类型的对象,可...

2019-03-01 17:04:37

Flutter和Dart系列六:Widget(一)

我们先编写一个简单的demo: import'package:flutter/material.dart';voidmain()=>runApp(Center(child:Text('Hello,world!',textDirection:TextDirection.ltr,),)); import:和Java中...

2019-02-28 18:28:44

Flutter和Dart系列四:Function

Dart语言是一门真正面向对象的语言,函数也是一个对象,并且类型为Function,这点和Js是类似的。 定义Function: 返回类型name(参数列表){} 例如: boolisAdult(intage){returnage>=18;}voidmain(){print(isAdult(28));//true}...

2019-02-23 18:43:29

理解设计模式之:多层次的单例模式

多维度的单例模式23种设计模式中,对于开发者而言,最熟悉不过就是单例模式了,单例模式的作用以及应用场景就不过多赘述了。今天我们的目的,主要是从多层次理解单例模式以及在实现单例模式中涉及的相关Java知识点。 饿汉式单例: publicclassSingleton{privatestaticfinalSingletonsInstance=newSing...

2019-02-23 15:28:51

Kotlin学习系列之:inline

inline:Kotlin中的一个关键字,用来修饰function,那么这个function就被称作inlinefunction(内联函数)。最初接触内联函数这个概念还是当初在学校学习C语言时候提到的,Java中是没有这一概念的,如今Kotlin又引入这一特性。那么inlinefunction有什么优势或者说特点呢? 特点:当你调用一个inlinefunction的时候,编译...

2019-02-01 10:30:11

Java中数组和ArrayList的区别

Java中数组和List泛型的区别:ArrayList中存放的都是对象,即引用类型,即使我们可以向里面put一个基本数据类型,那么也是基于自动装箱特性,将基本数据类型转换成对象;而数组中可以是任意类型 从实际工作经历上看,数组中是可以间隔存null的,而ArrayList是做不到这一点的 对于泛型数组是不能够实例化的,即不能newT[]出来,而newArrayList()是ok的 数...

2018-12-13 16:03:29

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。