5 栋梁_博客

尚未进行身份认证

我要认证

要想提升自我,必须作出特别的努力,额外的付出。但是长远来看,必然会有所收获。

等级
TA的排名 37w+

android 手机应用时长

项目中要求写一个统计桌面各个应用的使用情况的卡片,包括使用时间, 点击次数,使用流量。android 提供了一个UsageStatsManager 的类可以使用。记录 应用的信息。使用之前要加上<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/><!--使用时长-->UsageStatsManager manager = (UsageStatsManager)con...

2020-09-18 12:16:29

LinkedList 源码分析和使用

1.概述 底层实现是 双向链表,插入的效率比ArrayList高,但是随机访问的效率并没有 ArrayList 高。同时实现了 List 和 Deque,可以称为有序的容器, 也可以是队列,或者可以称为 栈(Stack)。2.使用 //创建存放int类型的linkedList LinkedList<Integer> linkedList = new LinkedList<>(); /******...

2020-09-16 12:47:50

ArrayList 使用和源码分析

1.概述 底层数组实现的,节约空间,但是数组是有容量限制的,超出限制时,使用 System.arrayCopyXXX复制到新的数组中,因此最好能够预估出数组的大小,默认第一次的创建的是 大小为 10 的数组。按照数组的下标访问元素性能是很高的,这特使数据的基本优势,直接在数组的尾部加入元素的性能也很高,但是 按下标,插入,删除元素的话,则需要 System。arrayCopyXXX 来移动元素,这时性能就差了,这是劣势。arrayList 可以自动的扩容,也就是 动态数组。 存放引用...

2020-09-16 12:18:13

Kotlin 类的扩展

### companion Object 外部类可以直接访问对象,不需要通过对象指针class AndroidDetailActivity : WebViewActivity() , AndroidCollectContract.View{ //companion object的好处是,外部类可以直接访问对象,不需要通过对象指针 companion object { const val INTENT_TAG...

2020-09-07 23:01:24

Kotlin 函数、扩展函数

### with函数 with函数用于对同一个对象执行多次操作而不需要反复把对象的名称写出来 fun main(args: Array<String>) { val result = StringBuilder() result.append("yyy") result.append("\n") for (letter in 'A'..'Z') { result....

2020-09-07 22:55:09

Kotlin 使用基础

### 变量 在 kotlin 中一切皆为对象,没有像 Java 中的原始基本类型。使用 var 修饰的为变量。 private var index: Int = 0 //定义具体的类型 private var a = 0 //自动识别是int类型,通常不需要指定变量的类型 private var point: Point? = null //定义对象 //可以发现...

2020-09-07 22:51:10

Kotlin 协程使用和原理分析

### 什么是协程 子程序或者称为函数,在所有的语言中都是层级调用,如:A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序是 通过栈来实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。 而协程看上去是子程序,执行的过程中,在 子程序中可中断,去执行其他的子程序,在适当的时候可以回来接着执行。 官方的定义:协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于...

2020-09-07 22:38:57

Kotlin lamdba表达式

### lambda 有什么作用 Lambda 表达式是一种很简单的方法定义一个 匿名函数,避免写一些函数的抽象类或接口,然后在类中实现他们,Kotlin中函数可以作为另一个函数的参数。### 都有那些使用场景 View.setOnClickListener() 方法。使用Java 的方式增加点击事件。 public interface OnClickListener { void onClick(View v); }...

2020-09-07 21:58:12

Kotlin 中缀函数介绍

### 中缀调用 使用 “to” 来声明 map 的 key 与 value 之间的对应关系,这种形式的函数调用被称为中缀调用。 fun main(args: Array<String>) { val maps = mapOf(1 to "qqq", 2 to "aa", 3 to "yyy") maps.forEach { key, value -> println("key is : $key , value is :...

2020-09-07 21:35:55

Kotlin 高阶操作符

一、总数操作符### any操作符 val list = listOf(1, 3, 5, 7, 9) println(list.any { it > 13 }) //false println(list.any { it > 7 }) //true### all操作符 val list = listOf(1, 3, 5, 7, 9) println(list.all { it > 13 }) //fal..

2020-09-07 16:35:39

Glide源码分析和低内存优化

### Glide加载图片的应用场景App在使用的过程中,会经常需要加载图片。1.从网络中加载图片,一般都是从服务器端获取图片的文件流,在通过 BitmapFactory.decodeStream(inputStream)来加载 bitmap。2.压缩网络图片,网络加载少量的图片不会出现问题,但是若短时间内加载大量的图片,短时间内占用大量的内存,造成内存抖动,甚至稻城 OOM(内存溢出)3.变换图片,剪切切割圆角,旋转,高斯模糊等。...

2020-08-27 13:06:27

Glide 基础使用介绍

### Gradle配置model配置:implementation 'com.github.bumptech.glide:glide:4.8.0'app配置:repositories {google()jcenter()mavenCentral()maven { url 'https://maven.google.com' }}### 常用的APIthumbnail(floa...

2020-08-27 13:05:28

Retrofit基础使用

### Retrofit介绍Retrofit是Square 公司开发的一款正对Android 网络请求的框架。底层基于OkHttp 实现,OkHttp 已经得到了google 官方的认可。Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,如果看源码会发现其实本质上是OkHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口请求的底层,其将请求返回JavaBean,对网络认证REST API进行了很友好的支持。...

2020-08-26 12:44:35

kotlin 语法分析(五)-- with ,let ,apply

Lambda表达式可以很好的去定义一个 匿名函数,避免我们去写一些某些函数的抽象类和接口,然后去实现它们,在kotlin中我们 可以将一个函数作为另一个函数的参数 简化setOnclickListener ()Android中的常用额点击事件 View.setOnclickListenr(),如果使用java中的代码去编写 ,需要下去书写一个接口,public interface OnClickL

2017-11-17 13:25:59

kotlin语法分析(四)

操作符的重载kotlin 有一些固定数量象征性的操作符,可以在任何类中去引用它们, 就是创建一个方法, 方法名为保留的操作符的关键字,这样就可以将这个操作符的行为映射到这个方法,重载这些代码可以增加代码的可读性和简介性. 一元操作符表 操作符 函数 +a a.unaryPlus() -a a.unaryMinus() !a a.not() a++ a.inc(

2017-11-17 13:25:20

kotlin 语法分析(三) -- 类引用

最基本的反射功能是获取kotlin类运行时的引用,要获取静态已知的kotlin的引用,使用 类字面值 的语法: val tag=MyClass::class 该引用是kotlin类型的值,请注意kotlin的引用和java有所不同,要获取java类的引用,请在 MyClass 实例上使用 .java 属性函数引用我们声明一个函数 ,如下: fun isOdd(x:Int) = x % 3 !=

2017-11-17 13:24:32

kotlin语法分析(二)

AnkoAnko是JetBrains开发的一个强大的库。主要是用来替代以前的xml方式生成代码的ui布局,它可以让我们来简化一些代码就像咱们使用的Anko库中的某些东西,它们就会以属性名,方法等饭方式导入. 在 MainActivity:onCreate ,一个Anko扩展函数可以被用来简化获取一个 RecyclerView:val forecastList: RecyclerView = fi

2017-11-17 13:23:35

kotlin语法分析(一)

AS环境的配置项目下的 build 文件 buildscript { ext.anko_version = '0.10.0-beta-2'//定义当前版本,方便后来引用 ext.kotlin_version = '1.1.2'//定义当前版本,方便后来引用 ext.support_version='25.0.3' repositories { jcen

2017-11-17 13:22:42

android 的混淆的那些事(模版)

代码的混淆: 在app目录下的build.gradle文件中添加如下代码: buildTypes { release { minifyEnabled true //打开混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.

2017-11-17 13:17:30
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。