Android开发( 右侧选择分类 )
android01

android源码解析(二十九)-- 应用程序返回按键执行流程

从这篇文章中我们开始分析android系统的事件分发流程,其实网上已经有了很多关于android系统的事件分发流程的文章,奈何看了很多但是印象还不是很深,所以这里总结一番。android系统的事件分发流程分为很多部分:Native层 --> ViewRootImpl层 --> DecorView层 --> Activity层 --> ViewGroup层 --> Vi
671 人浏览
android01

Android源码解析(二十五)-- Android onLowMemory执行流程

上篇文章中我们分析了Activity的onSaveInstanceState方法执行时机,知道了Activity在一般情况下,若只是执行onPause方法则不会执行onSaveInstanceState方法,而一旦执行了onStop方法就会执行onSaveInstanceState方法,具体的信息,可以参见onSaveInstanceState方法执行时机:android源码解析(二十四)--&g
671 人浏览
kotlin

基本数据类型

在 Kotlin 中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数和属性。 一些类型可以有特殊的内部表示——例如,数字、字符和布尔值可以在运行时表示为原生类型值,但是对于用户来说,它们看起来就像普通的类。 在本节中,我们会描述 Kotlin 中使用的基本类型:数字、字符、布尔值、数组与字符串。一、数字Kotlin 处理数字在某种程度上接近 Java,但是并不完全相同。例如,对于
666 人浏览
android01

Android源码解析之(二)-- Android异步消息机制

知乎上看了一篇非常不错的博文:有没有必要阅读ANDROID源码痛定思过,为了更好的深入android体系,决定学习android framework层源码,就从最简单的android异步消息机制开始吧。(一)Handler的常规使用方式publicclassMainActivityextendsAppCompatActivity{ publicstaticfinalStringTAG=Mai
665 人浏览
android

Android Studio 修改主题样式

虽然Android Studio自带了三种主题样式,但是如果对这些主题样式都不满意,又不想自己一个一个去设置主题样式。可以去网上下载自己喜欢的主题样式并导入。首先说一下Android Studio自带主题的切换。打开AS菜单栏File->Settings->Appearance&Behavior->Appearance界面,里面有Theme选项,里面有Darcula、In
662 人浏览
android01

Android源码解析(十六)-- Android应用进程Context创建流程

今天讲讲应用进程Context的创建流程,相信大家平时在开发过程中经常会遇到对Context对象的使用,Application是Context,Activity是Context,Service也是Context,所以有一个经典的问题是一个App中一共有多少个Context?这个问题的答案是Application + N个Activity + N个Service。最后我们得出结论,应用进程的起始方法
659 人浏览
cnbzlj

Okhttp3基本使用

I.简介HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性:支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接连接池减少请求延时透明的GZIP压缩减少响应数据的大小缓存响应内容,避免一些完全重复的请求当网络出现问题的时候OkHttp依然坚守自己的职责,它会自动恢复一般的连
650 人浏览
tinuv

StreamAPI中常用的方法

StreamAPI中常用的方法filter()lambda函数传入一个参数,返回符合条件的publicstaticvoidmain(String[]args){ List<String>strings=newArrayList<String>(){ { add("test1"); add("test2"); add(&quo
647 人浏览
android01

Android源码解析之(一)-- Android项目构建过程

平时开发过程中我们通过android studio编写完成android项目之后直接点击 Run 'app'就可以在build/outputs/apk生成可以在android设备中安装的apk文件了,那么整个android源码的构建过程是怎么样的呢?我们可以根据Google官方提供的流程图来具体了解构建的过程:通常的构建过程就是如上图所示,下面是具体描述:1.AAPT(Androi
645 人浏览
kotlin

Kotlin的面向对象编程,深入讨论继承写法的问题

因此本篇文章同时还会涵盖Kotlin继承与面向对象方面的知识。类与对象首先Kotlin中定义一个类很简单,如下所示:classPerson{ }这是一个空的类实现,可以看到,Kotlin中也是使用class关键字来声明一个类的,这点和Java一致。现在我们可以在这个类中加入字段和函数来丰富它的功能,这里我准备加入name和age字段,以及一个eat函数,因为任何一个人都有名字和年龄,也都需要吃饭
638 人浏览
android01

Android源码解析(十五)-- Activity销毁流程

继续我们的源码解析,上一篇文章我们介绍了Activity的启动流程,一个典型的场景就是Activity a 启动了一个Activity b,他们的生命周期回调方法是:onPause(a) --> onCreate(b) --> onStart(b) --> onResume(b) --> onStop(a)而我们根据源码也验证了这样的生命周期调用序列,那么Activity的
637 人浏览
tinuv

反射学习(一)

理论学习Class类关于类的抽象,或者说,Class类描述了一个类,每个类中都有一个Class对象,在Java中,类是现实世界的一种抽象,或者说是一种描述,比如Person类,可以根据需求将人抽象成具有性别,年龄属性,能吃饭(方法)的一种实体,同样Class类也抽象了Java类中的一些特点.每一个类中都有一个Class对象,可以通过如下方法获得一个Class类的实例ClassstringClass
633 人浏览
bbsmax

深度递归必须知道的尾调用(Lambda)

引导语本文从一个递归栈溢出说起,像大家介绍一下如何使用尾调用解决这个问题,以及尾调用的原理,最后还提供一个解决方案的工具类,大家可以在工作中放心用起来。递归-发现栈溢出现在我们有个需求,需要计算任意值阶乘的结果,阶乘我们用 n!表示,它的计算公式是:n! = 123……(n-1)n,比如说 3 的阶乘就是 123。对于这个问题,我们首先想到的应该就是递归,我们立马写了一个简单的递归代码://阶乘计
621 人浏览
kotlin

Kotlin编码风格

此页面包含当前 Kotlin 语言的编码风格一、命名风格如果拿不准的时候,默认使用Java的编码规范,比如:使用驼峰法命名(并避免命名含有下划线)类型名以大写字母开头方法和属性以小写字母开头使用 4 个空格缩进公有函数应撰写函数文档,这样这些文档才会出现在 Kotlin Doc 中二、冒号类型和超类 之间的冒号前要有一个空格,而实例和类型之间的冒号前不要有空格:interface Foo<o
619 人浏览
android00

Android Studio配置正式签名和debug签名

需求:如果应用中牵扯到第三方平台集成的话,调试是非常讨厌的一件事,因为很多第三方要求正式签名后生成的包才可以正常使用。所以,在debug模式下配置正式签名包,就可以解决问题。在主工程(一般都是app)下的build.gradle里,配置2个签名:signingConfigs{ release{ keyAlias'###' keyPassword'******'
617 人浏览
android01

Android源码解析(七)-- Android之LruCache

android开发过程中经常会用到缓存,现在主流的app中图片等资源的缓存策略一般是分两级,一个是内存级别的缓存,一个是磁盘级别的缓存。作为android系统的维护者google也开源了其缓存方案,LruCache和DiskLruCache。从android3.1开始LruCache已经作为android源码的一部分维护在android系统中,为了兼容以前的版本android的support-v4
612 人浏览
cnbzlj

android 如何使用android:supportsRtl属性

今天,简单讲讲android里如何使用AndroidManifest文件里的android:supportsRtl属性。 之前,在app上发现一个问题,就是app设置为阿拉伯语时,手机默认德我布局方向变成了从右往左,导致界面出现了很大的问题。后来通过修改布局,解决了部分界面的问题,但是界面在从右往左时还是显示的不很好看。于是我打开应用宝,发现应用宝的界面是正常的从左往右布局。所以在网上查找资料,
601 人浏览
tinuv

Java正则表达式简单学习

与正则表达式相关的类Pattern类Pattern 模式,代表匹配的模式,Pattern没有公共的构造方法,只有一个私有的构造方法privatePattern(Stringp,intf)通常使用静态方法compile()来生成一个Pattern对象publicstaticPatterncompile(Stringregex)compile()方法的参数就是一个正则表达式,正则表达式待会再说.Mat
601 人浏览
gityuan

如何自学Android

引言:知乎上我曾回答了 自学编程一年,压力过大,该怎么办? - Gityuan 的回答,之后有不少知乎朋友私信或Email给我,希望能讲讲学习Android的心得。业内有不少同仁写过关于如何自学的文章,本文则是从自身的学习经历和经验,可能并不是适合每一个人,写出来仅供大家参考。看到很多人提问非科班该如何学习编程,其实科班也基本靠自学。有句话叫“师傅领进门修行靠个人”,再厉害的老师能教你的东西都是很
595 人浏览
cnbzlj

android studio环境配置

今天,简单讲讲Android studio如何安装和配置好环境。昨天,讲了jdk环境的配置,如果没有配置好jdk,是不能安装Android studio的。如果已经配置好jdk环境,那么直接学习Android studio 的环境配置。这里提一下,自己昨天终于成功申请到专栏作家,感觉坚持写博客还是有回报的。下一个目标是CSDN的博客专家。1、首先必须安装Java JDK (Java JDK下载、安
595 人浏览