自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

android开发笔记

android开发笔记

  • 博客(69)
  • 资源 (14)
  • 收藏
  • 关注

转载 教你如何攻克Kotlin中泛型型变的难点(上篇)

简述: Kotlin中泛型相关的文章也几乎接近尾声,但到后面也是泛型的难点和重点。相信有很多初学者对Kotlin中的泛型型变都是一知半解,比如我刚开始接触就是一脸懵逼,概念太多了,而且每个概念和后面都是相关的,只要前面有一个地方未理解后面的难点更是越来越看不懂。Kotlin的泛型比Java中的泛型多了一些新的概念,比如子类型化关系、逆变、协变、星投影的。个人认为学好Kotlin的泛型主要有这么几个...

2019-04-21 05:12:49 375

转载 Kotlin的独门秘籍Reified实化类型参数(下篇)

简述: 今天我们开始接着原创系列文章,首先说下为什么不把这篇作为翻译篇呢?我看了下作者的原文,里面讲到的,这篇博客都会有所涉及。这篇文章将会带你全部弄懂Kotlin泛型中的reified实化类型参数,包括它的基本使用、源码原理、以及使用场景。有了上篇文章的介绍,相信大家对kotlin的reified实化类型参数有了一定认识和了解。那么这篇文章将会更加完整地梳理Kotlin的reified实化类型参...

2019-04-21 05:12:40 397

转载 Kotlin的独门秘籍Reified实化类型参数(上篇)

翻译说明:原标题: Getting Real with Kotlin's Reified Type Parameters原文地址:typealias.com/guides/gett…原文作者:Dave Leeds历史背景:我们都知道Java中的泛型是在JDK1.5的版本引入的,可是集合Collection在JDK1.2版本中就引入的,我们现在所看到的List<T&gt...

2019-04-21 05:12:19 582

转载 有关Kotlin属性代理你需要知道的一切

简述: 今天继续Kotlin原创系列的第十一讲,一起来揭开Kotlin属性代理的漂亮外衣。属性代理可以说是Kotlin独有的强大的功能之一,特别是对于框架开发的小伙伴来说非常有用,因为会经常涉及到更改存储和修改属性的方式操作,例如Kotlin中的SQL框架Exposed源码就大量使用了属性代理。相信你已经在代码也使用了诸如Delegates.observable()、Delegates.notNu...

2019-04-20 17:15:36 446

转载 浅谈Kotlin中集合和函数式API完全解析-上篇(八)

简述: 今天带来的是Kotlin浅谈系列的第八讲,这讲我们一起来聊聊Kotlin这门语言对函数式编程的支持。我们都知道在kotlin这门语言中函数荣升成为了一等公民,所以在支持函数式编程的方面,Kotlin这门语言也是非常给力的,并且在Kotlin中语法也尽量推荐接近函数式编程的风格。学过以及了解过函数式编程的小伙伴都知道函数式编程最吸引人的地方,莫过于它拥有丰富的函数式操作符,可以使用一种全新的...

2019-04-20 17:07:08 429

转载 浅谈Kotlin语法篇之lambda编译成字节码过程完全解析(七)

简述: 今天带来的是Kotlin浅谈系列第七弹,上篇博客我们聊到关于Kotlin中的lambda表达式的一些语法规则和基本使用。然而我们并没有聊到Kotlin的lambda表达式的本质是什么?我们都知道使用Kotlin来开发Android,最终都会编译成字节码文件.class,然后字节码文件run到JVM上,最后整个应用跑起来。1、为什么需要去对lambda表达式字节码分析?(why) 2、...

2019-04-20 12:18:47 381 1

转载 浅谈Kotlin语法篇之Lambda表达式完全解析(六)

简述: 今天带来的Kotlin浅谈系列的第六弹, 一起来聊下Kotlin中的lambda表达式。lambda表达式应该都不陌生,在Java8中引入的一个很重要的特性,将开发者从原来繁琐的语法中解放出来,可是很遗憾的是只有Java8版本才能使用。而Kotlin则弥补了这一问题,Kotlin中的lambda表达式与Java混合编程可以支持Java8以下的版本。那我们带着以下几个问题一起来看下Kotli...

2019-04-20 12:10:22 218

转载 浅谈Kotlin语法篇之扩展函数(五)

简述: 今天带来的是Kotlin浅谈系列的第五弹,这讲主要是讲利用Kotlin中的扩展函数特性让我们的代码变得更加简单和整洁。扩展函数是Kotlin语言中独有的新特性,利用它可以减少很多的样板代码,大大提高开发的效率;此外扩展函数的使用也是非常简单的。我会从以下几个方面阐述Kotlin中的扩展函数。1、为什么要使用Kotlin中的扩展函数? 2、怎么去使用扩展函数和扩展属性? 3、什么是扩...

2019-04-20 12:03:12 276

转载 浅谈Kotlin语法篇之顶层函数、中缀调用、解构声明(四)

简述: 今天带来的是Kotlin浅谈系列的第四弹,这次主要聊下Kotlin独有的新特性,Java不具备的。Kotlin是一种增加许多新功能的语言,允许编写更简洁易读的代码,这使得我们的代码更易于维护。例如使用顶层函数和属性从此消除Java中的static、中缀表达式调用和解构声明等。1、为什么要用顶层函数替代Java中的static函数 2、顶层函数和属性的基本使用 3、顶层函数实质原理...

2019-04-20 11:59:06 220

转载 浅谈Kotlin语法篇之如何让函数更好地调用(三)

简述: 今天带来的是Kotlin浅谈系列第三弹,这讲来聊下函数调用和函数重载问题,看到标题就知道Kotlin在函数调用方面有优于Java的地方。先抛出以下几个坑(估计曾经的你踩过...),看我们怎么去一步步填坑,从中你会体验Kotlin这门语言魅力。1、Java在函数调用方面存在怎样的坑? 2、Kotlin是怎样去解决函数调用的坑? 3、Java在函数重载方面存在怎样的坑? 4、Kotl...

2019-04-20 11:50:08 203

转载 浅谈Kotlin语法篇之变量和常量(二)

这次所说的是Kotlin的变量和常量,主要会对以下内容做介绍:1、变量基本定义 2、var和val的区别 3、智能类型推断 4、自定义属性访问器 5、var是可变的而val一定是不可变的吗一、Kotlin与Java中变量和常量 使用对比1、在Java中定义一个变量和常量public String name = "Mikyou";//定义变量public final int ...

2019-04-20 11:41:12 162

转载 浅谈Kotlin语法篇之基础语法(一)

Kotlin的基本语法的介绍,先从整体上体会kotlin的编程风格。一、包的声明在Kotlin中定义包与Java有点不同,在Kotlin中目录与包结构无需匹配,Kotlin的源码可以在磁盘上的任意位置。1、包的声明源文件的通常是以包的声明的开头和Java一样。package com.mikyou.hellokotlin/** * Created by mikyou...

2019-04-20 11:20:32 114

转载 Java中Lambda表达式的使用

简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.)Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一...

2019-04-20 11:09:56 68

翻译 Kotlin中内联类(inline class)完全解析

翻译说明:原标题: An Introduction to Inline Classes in Kotlin原文地址:typealias.com/guides/intr…原文作者:Dave Leeds无论你是编写执行在云端的大规模数据流程程序还是低功耗手机运行的应用程序,大多数的开发者都希望他们的代码能够快速运行。现在,Kotlin的最新实验性的特性内联类允许创建我们想要的数据类...

2019-04-19 07:04:56 781 1

翻译 Kotlin中关于Companion Object的那些事

翻译说明:原标题: A few facts about Companion objects原文地址:https://blog.kotlin-academy.com/a-few-facts-about-companion-objects-37e18429b725](https://blog.kotlin-academy.com/a-few-facts-about-companion-obj...

2019-04-19 06:54:53 5410

翻译 掌握Kotlin中的标准库函数: run、with、let、also和apply

翻译说明:原标题: Mastering Kotlin standard functions: run, with, let, also and apply原文地址:https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84原文...

2019-04-19 06:51:58 184

转载 Navigation 详解三

配合 Toolbar在 BottomNavigationActivity 中添加 Toolbar,修改主题为 NoActionBar 的。override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activi...

2019-04-19 06:46:18 483

转载 Navigation 详解二

配合 BottomNavigationView创建 Bottom Navigation ActivityBottomNavigationView 以更简洁的方式来实现过去的 BottomNavigationBar 的样式。Android Studio 中创建一个 Bottom Navigation Activity,自动生成 Activity。class BottomNavigati...

2019-04-19 06:44:41 696

转载 Navigation 详解一

Navigation 是 JetPack 中的一个组件,用于方便的实现页面的导航,所以抽象出了一个 destination 的概念,大部分情况一个 destination 就表示一个 Fragment,但是它同样可以指代 Activity、其它的导航图。最初要有个起始页面,叫 start destination,处于栈底,是启动时的第一个页面,当然也是返回可见的最后一个页面。多个 destin...

2019-04-19 06:43:07 698

转载 Java 泛型进阶

擦除在泛型代码内部,无法获得任何有关泛型参数类型的信息。例子1://这个例子表明编译过程中并没有根据参数生成新的类型public class Main2 { public static void main(String[] args) { Class c1 = new ArrayList<Integer>().getClass(); ...

2019-04-19 06:39:12 70

转载 三句话总结JAVA泛型通配符(PECS)

在JAVA的泛型集合中,默认都可以添加null,除此以外,还有以下三条规则。1. “?”不能添加元素以“?”声明的集合,不能往此集合中添加元素,所以它只能作为生产者(亦即它只能被迭代),如下:List<?> names = Lists.newArrayList("yiifaa");// 通配符声明的集合,获取的元素都是Object类型List<Object>...

2019-04-13 10:55:27 116

转载 深入理解 Java 泛型

为什么需要泛型?先来看一段代码,这段代码是用来计算两个数之和,可以看到每次新增一种数据类型,那么就要新增一个方法,这显然是不好的解决方法。public class NoGeneric { public int addInt(int a, int b) { return a + b; } public double addDouble(...

2019-04-13 10:53:32 175

转载 You must not call setTag() on a view Glide is targeting的解决方案

概述在使用Glide加载图片时,如果出现“You must not call setTag() on a view Glide is targeting”的错误,八成是在使用ListView的时候出现的。简单来说就是原本想简化布局文件的代码,但是很不幸,这样做却会造成错误。解决方案1如果出错了,你的item八成是这个样子:<?xml version="1.0" encoding=...

2019-04-13 10:30:29 742

转载 项目从studio2.0.0升级到studio3.1.2遇到的坑

问题一 : Error:All flavors must now belong to a named flavor dimension. Learn more我是在项目的build.gradle中使用了productFlavors,结果编译时报了如下错误:提示:Error:All flavors must now belong to a named flavor dimension.Lea...

2019-04-13 10:26:49 504

转载 解决:ButterKnife在gradle 3.0以后用不了的情况

今天看着项目,想着使用黄油刀省点事儿,配置好黄油刀之后,悠哉的点击了一下运行,突然报了一个异常,如下:Error:java.lang.RuntimeException: Annotation processors must be explicitly declared now. The following dependencies on the compile classpath a...

2019-04-13 10:22:50 498

转载 线程执行顺序错误

今天在写博客的时候,想弄个例子说明一下非原子操作的线程安全问题,下面就是这个例子public class Main { public static void main(String[] args) { Counter counter = new Counter(); // 开启1000条线程让counter的count++,理想结果应该是1000 ...

2019-04-13 10:20:05 233

转载 Synchronized与ReentrantLock区别总结

相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善)。功能区别:这两种方式最大区别就是对于Synchronized来说,它是java语言的关键...

2019-04-13 10:15:25 556

转载 Android消息机制和其应用

本文主要讲的是Android消息机制的Java层,Android消息机制对Android开发者来说是一个基础知识,网络上介绍Android消息机制的文章很多,为了本文不显得多余,我争取从不同的角度来做一个解析,包括一些基础和源码分析。我们知道Android的消息机制主要指Handler、MessageQueue和Looper的运作机制、要想完全搞清楚Android的消息机制势必要先理解Bind...

2019-04-13 10:11:12 129

转载 android retrofit2 如何多文件上传

1、build.gradle中添加依赖compile 'com.squareup.okhttp3:okhttp:3.4.1'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'compile 'com.google.code.gson:gson:2.5'compile 'com.squareup.retrofit2:retrof...

2019-04-13 09:53:37 1814

安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world.docx

安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world

2019-08-25

01 Protocol Buffer技术详解(语言规范).doc

01 Protocol Buffer技术详解(语言规范).doc

2016-05-08

java设计模式

java设计模式

2016-05-08

OkHttp使用教程

OkHttp使用教程 OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。

2015-12-18

IDirectDraw7的使用

LPDIRECTDRAW7 lpDD; //DirectDraw对象 LPDIRECTDRAWSURFACE7 lpDDSPrimary ; //DirectDraw主表面 LPDIRECTDRAWSURFACE7 lpDDSBack ; //后台缓冲表面 DDSURFACEDESC2 ddsd ; //表面描述 DDSCAPS2 ddscaps ; 而且声明完表面描述后应立即用 ZeroMemory( &ddsd, sizeof( ddsd ) ); ZeroMemory( &ddscaps, sizeof( ddscaps ) ); 这两个语句使ddsd和ddscaps中的变量都为零,如果不这样做下面的CreateSurface会不成功。

2014-10-14

DirectDraw7编程基础

首先定义一个指向DirectDraw对象的指针,创建DirectDraw对象,查询以获取最新的DirectDraw接口,设置协作等级,设置显示模式。

2014-10-14

MTK短信编码.docx

目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L M十三项组成。

2012-12-06

c语言设计(最全).ppt

C程序设计 上海工程技术大学 主讲:李旭芳 教材 C程序设计 (第二版) 谭浩强编著 清华大学出版社

2012-12-06

常用编码详解.docx

详细介绍各种常见编码的转换算法。通用字符集(UCS)、Unicode编码、UTF-8编码、UTF-7编码、GB2312编码、URL 解码

2012-12-06

刷机原理04 Android系统Recovery模式的工作原理.wps

Android系统Recovery模式的工作原理 在使用update.zip包升级时怎样从主系统(main system)重启进入Recovery模式,进入Recovery模式后怎样判断做何种操作,以及怎样获得主系统发送给Recovery服务的命令,这一系列问题的解决是通过整个软件平台的不同部分之间的密切通信配合来完成的。为此,我们必须要了解Recovery模式的工作原理,这样才能知道我们的update.zip包是怎样一步步进入Recovery中升级并最后到达主系统的。 一、Recovery模式中的三个部分 ................

2012-10-24

刷机原理03 Android系统的三种启动模式.wps

Android系统的三种启动模式 一、 系统更新update.zip包的两种方式 1. Android在升级系统时获得update.zip包的方式有两种。一种是离线升级,即手动拷贝升级包到SD卡(或NAND)中,通过settings--&gt;About phone--&gt;System Update--&gt;选择从SD卡升级。另一种是在线升级,即OTA Install(over the air)。用户通过在线下载升级包到本地,然后更新。这种方式下的update.zip包一般被下载到系统的/CACHE分区下。 2. 无论将升级包放在什么位置,在使用update.zip更新时都会重启并进入Recovery模式,然后启动recovery服务(/sbin/recovery)来安装我们的update.zip包。 ............

2012-10-24

刷机原理02 Android升级包update.zip的生成过程分析.wps

Android升级包update.zip的生成过程分析1) 对于update.zip包的制作有两种方式,即手动制作和命令生成。 第一种手动制作:即按照update.zip的目录结构手动创建我们需要的目录。然后将对应的文件拷贝到相应的目录下,比如我们向系统中新加一个应用程序。可以将新增的应用拷贝到我们新建的update/system/app/下(system目录是事先拷贝编译源码后生成的system目录),打包并签名后,拷贝到SD卡就可以使用了。 第二种制作方式:命令制作。Android源码系统中为我们提供了制作update.zip刷机包的命令,即make otapackage。该命令在编译源码完成后并在源码根目录下执行。 具体操作方式:在源码根目录下执行 ①$ . build/envsetup.sh。 ②$ lunch 然后选择你需要的配置(如17)。 ③$ make otapackage。 ....................

2012-10-24

刷机原理01 update.zip包目录结构

update.zip包目录结构 boot.img是更新boot分区所需要的文件。这个boot.img主要包括kernel+ramdisk。 system/目录的内容在升级后会放在系统的system分区。在Android源码编译后out/target/product/generic/system/。

2012-10-24

空空如也

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

TA关注的人

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