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

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

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

StreamAPI中常用的方法

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

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

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

Activity学习笔记

笔记Activity有四种基本状态Active/Running:一个新的Activity启动后,在屏幕的最前端,在栈顶,处于可见且可与用户交互的状态Paused:失去焦点,如被一个Dialog覆盖后,此时仍然与窗口管理器保持连接,系统继续维护其内部状态,仍然可见Stopped:被另一个activity覆盖,失去焦点并不可见时Killed:当Activity被系统杀死回收或者没有被启动时,处于Kil
1357 人浏览
android

Android 将bitmap保存为本地png图片

Android 将bitmap保存为本地png图片,废话补多少直接上代码:BItmapUtils:package com.zhangyu.myopengl.utils; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android
1356 人浏览
bbsmax

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

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

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

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

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

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

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

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

Kotlin学习

定义包,引入包packageme.tinuv importjava.util.*这个与Java是相似的.定义变量与Java不同,kotlin的类型都是写在后面的.vala:Int=10100100 valb=10也可以省略,kotlin会自动推断,但我不知道是不是所有类型都可以自动推断.自动推断必须要有初始值valc:Int c=100注意:定义只读局部变量使⽤关键字 val 定义.只能
1331 人浏览
cnbzlj

Android 自定义简单View及获取xml自定义属性

一、前言对于自定义View相信这是每一个初学者心里的痛,但开发久了,慢慢的你就会发现,其实自定义View并不难,看几篇基础文章,懂得了原理和流程套路,用的多了,实战多了,自然而然就掌握了。近期在时间上还算空余,所以打算在学习新的东西的同时,把旧的基础的东西也好好梳理一下,总不能捡一路丢一路吧。二、自定义View首先先总结一下一般自定义View的步骤,让我们在写的时候能有一个大致的方向:1.继承一个
1324 人浏览
android

android 解决Error:This Gradle plugin requires a newer IDE able to request IDE model level 3. For Android

今天,简单讲讲android studio导入工程时,出现报错Error:This Gradle plugin requires a newer IDE able to request IDE model level 3. For Andro。这个问题其实是由于android studio是2.x版本,而导入的工程是使用android studio 3.0创建的,所以会出问题。在网上找了解决的办法
1321 人浏览
cnbzlj

Android Glide加载图片成圆形

今天,简单讲解android使用glide加载图片成圆形。这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了。1、导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2、用Glide加载圆形图片Glide.with(context).load(list.get(position
1309 人浏览
cnbzlj

Okhttp3基本使用

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

HDFS 读写流程-英

HDFS 文件读取流程The client opens the file it wishes to read by calling open() on the FileSystem object, which for HDFS is an instance of DistributedFileSystem (step 1 in Figure 3-2).DistributedFileSystem c
1304 人浏览
tinuv

Java正则表达式简单学习

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

android 使用web浏览器打开指定页面

今天,简单讲讲android里如何使用浏览器打开指定的网页。之前,我做一个功能时,服务器返回一个url地址,我需要跳转到指定网页。却发现自己不知道怎么做,在网上搜索了资料,最终是解决了问题。这里记录一下。启动android默认浏览器在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打
1290 人浏览
android01

Android源码解析之(五)-- Android之IntentService

什么是IntentService?简单来说IntentService就是一个含有自身消息循环的Service,首先它是一个service,所以service相关具有的特性他都有,同时他还有一些自身的属性,其内部封装了一个消息队列和一个HandlerThread,在其具体的抽象方法:onHandleIntent方法是运行在其消息队列线程中,废话不多说,我们来看其简单的使用方法:定义一个IntentS
1289 人浏览
android

Android高级面试题汇总——Android篇(2)

三)常见的一些原理性问题1、Handler机制和底层实现 机制:hanlder是android线程间通信的一种实现,以消息队列的方式实现线程间数据的共享,通过Looper不断的轮询消息队列来 获取数据 底层:MessageQueen、Looper以及Looper内部的ThreadLocal,我们在线程中Looper对消息队列的管理过程离不开数据储存ThreadLocal,ThreadLocal在多
1287 人浏览
android

android 配置ADB环境

今天,简单讲讲如何配置Android的adb命令环境。 之前,自己要使用Dos窗口的ADB命令,发现无法识别。很明显是ADB环境没有配置好。我这里Android studio的huan环境已经配置好了,于是在网上查找资料,很简单就解决了。 第一步,打开环境变量配置窗口。右击计算机,属性-高级系统设置-环境变量。 第二步,添加android系统环
1278 人浏览