自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 收藏
  • 关注

原创 Android 开发中常用的库

1、打印日志地址:https://github.com/orhanobut/logger2、张鸿洋StickyNavLayout博客:https://blog.csdn.net/lmj623565791/article/details/43649913地址:https://github.com/hongyangAndroid/Android-StickyNavLayout效果图...

2019-07-10 10:47:05 1142 1

原创 Android 实现多渠道打包

walle官方GitHub地址:https://github.com/Meituan-Dianping/walleVasDolly官方GitHub地址:https://github.com/Tencent/VasDollyVasDolly接入的步骤:第一步:在Project的build.gradle中添加这行代码buildscript { repositories {...

2019-06-26 18:28:56 680

转载 Android内部存储与外部存储(私有目录与公共目录)图文详解

Android内部存储与外部存储(私有目录与公共目录)图文详解

2023-12-09 19:03:10 280

原创 Android 解决Gradle 三方依赖冲突方法

Android 解决Gradle 三方依赖冲突方法

2023-12-02 17:16:06 649

原创 Android aidl的简单使用

好像有些手机是不行的,比如华为荣耀v30。不行的话,换个手机试试吧。

2023-11-26 19:22:41 582

转载 Android面试基础总结

Java集合大致可以分为Set、List、Queue和Map四种体系。其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5 又增加了Queue体系集合,代表一种队列集合实现。Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。Collection接口是Set,Queue,List的父接口。

2023-11-21 13:24:51 53

原创 2023Android最新面试题

1.Activity2.Service5.Handler6.View绘制7.View事件分发10.WebView11.动画12.Bitmap14.Binder15.内存泄漏&内存溢出16.性能优化18.WMS19.AMS20.系统启动21.App启动&打包&安装22.序列化23.Art & Dalvik 及其区别24.模块化&组件化25.热修复&插件化26.AOP28.开源框架。

2023-05-24 15:56:22 697

原创 面试技术点

Retrofit的封装可以说是很强大,里面涉及到一堆的设计模式,可以通过注解直接配置请求,可以使用不同的http客户端,虽然默认是用http ,可以使用不同Json Converter 来序列化数据,同时提供对RxJava的支持,使用Retrofit + OkHttp + RxJava + Dagger2 可以说是目前比较潮的一套框架,但是需要有比较高的门槛。所以,在Service中创建的Thread,适合长期执行一些独立于APP的后台任务,比较常见的就是:在Service中保持与服务器端的长连接。

2023-05-24 15:46:08 398

原创 Android P12证书的使用

Android p12证书使用

2022-09-18 18:45:38 1297 1

原创 Android WebView加载html 代码

private void setWebString(WebView webView, String content) { StringBuilder sb = new StringBuilder(); sb.append("<html>"); sb.append("<head>"); sb.append("<title>欢迎您</title>"); sb.append("...

2022-05-28 16:01:24 400

原创 Android 蓝牙Wifi配网

demo地址蓝牙配网:GitHub - EspressifApp/EspBlufiForAndroid: EspBlufi is based on the BLUFI protocol, which connect with IOT devices for BLE data communication, realizes device config network, and custom data transmission and reception. EspBlufi is developed and

2022-01-21 19:13:42 3745

原创 Android 蓝牙发现设备

public class BluetoothUtil { public static final String BLUFI_PREFIX = "MH-"; public static BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); /** * 是否支持蓝牙 * * @return */ public static boolean .

2022-01-21 19:06:14 1707

原创 Android 监听Wifi网络状态

1、权限 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&g

2021-09-02 18:42:56 2170 1

原创 Android java对象的深浅拷贝

一、深拷贝public class CloneUtil { /** * 复制 * * @return */ public static <T extends Serializable> T clone(T object) { try { // 说明:调用ByteArrayOutputStream或ByteArrayInputStream对象的close方法没有任何意义 /

2021-07-27 16:34:52 357

原创 Android OkHttp信任所有证书

一、创建OkHttpClientmOkHttpClient = new OkHttpClient.Builder() .retryOnConnectionFailure(false)//允许失败重试 .readTimeout(TIMEOUT, TimeUnit.SECONDS)//设置读取超时时间 .writeTimeout(TIMEOUT, TimeUnit.SECONDS)//设置写的超时时间 .connectTimeout(TIME

2021-07-20 19:59:56 1210 1

转载 Android Okhttp 之WebSocket简单使用

android实现一个聊天功能,okhttp内置的websocket蛮好用的,简单介绍其使用方式1.项目用的是retrofit2自带okhttp,没有的话添加依赖implementation 'com.squareup.okhttp3:okhttp:3.8.1'2.重要的网络权限不能少<uses-permission android:name="android.permission.INTERNET"/>3.某个activity中初始化OkHttpClient client.

2021-07-16 11:25:54 1432

原创 Android 应用切换后台,打开停留原来的页面

需要在启动页添加如下代码:比如SplashActivity @Override protected void onCreate(Bundle savedInstanceState) { // 避免从桌面启动程序后,会重新实例化入口类的activity if (!this.isTaskRoot()) { // 当前类不是该Task的根部,那么之前启动 Intent intent = getIntent(); i

2021-06-17 14:38:58 2027

转载 android okhttp实现文件上传进度监听

一,先来看下okhttp文件上传的写法File file = new File(Environment.getExternalStorageDirectory(), "hahah.rar");OkHttpClient httpClient = new OkHttpClient();// 构建请求 Body , 这个我们之前自己动手写过MultipartBody.Builder builder = new MultipartBody.Builder() .setT

2021-05-11 10:07:02 869

转载 Android中ImageView控件的ScaleType属性使用详解

在我们平时的开发过程中,可以说图片展示是每个App必备的,所以我们会用到ImageView图片控件,对于每个Android开发者来说,这已经非常熟悉了,那有童鞋就会问了:这还有什么好讲的呢?事实确实是这样吗? 那我问问你,你确定对ImageView控件的每个属性都了如指掌了吗?,记得之前面试的时候,很多面试官很喜欢问ScaleType属性的使用,这就考察你是否真的理解了。之前我也并没有在意这个属性的使用,以为只会...

2021-04-20 10:20:44 262

转载 Android 自定义 Switch

先不废话,上图可以自定义滑块 和背景哦~未选中已选中2、开始进入代码环节Java部分,监听和调用mToolSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean i..

2021-04-07 18:20:35 1083

转载 Android Handler为什么Looper中的Loop()方法不能导致主线程卡死?

原文链接:http://www.androidchina.net/9544.html关于 Handler 的问题已经是一个老生常谈的问题, 网上有很多优秀的文章讲解 Handler, 之所以还要拿出来讲这个问题, 是因为我发现, 在一些细节上面, 很多人还都似懂非懂, 面试的时候大家都能说出来一些东西, 但是又说不到点子上, 比如今天要说的这个问题: 为什么Looper 中的 loop()方法不能导致主线程卡死??先普及下 Android 消息机制 的基础知识:Android 的消息机制涉及了四

2021-03-04 00:57:55 378 1

转载 Android Sqlite数据库优化及其对比(二)

原文链接:https://blog.csdn.net/c815852517/article/details/90603511前言我们在做Android开发时常会用到Sqlite数据库做为本地的缓存库,针对Sqlite数据库的性能优化网上也有不少的文章,接下来我将对Sqlite数据库性能优化及其对比进行分析。本系列博文关于数据库优化及其对比我会分为以下3个模块来和大家分享:(1)性能优化的要点及方法(2)查询优化的方法(3)性能优化的对比一、性能优化的要点及方法1、编译SQL语句(重复的插

2021-03-02 23:31:22 547

转载 Android 你要的WebView与 JS 交互方式(WebView 二)

转载:https://blog.csdn.net/carson_ho/article/details/64904691 前言 现在很多App里都内置了Web网页(Hybrid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 ...

2021-03-01 02:13:40 253

转载 Android Webview使用攻略(WebView 一)

前言 现在很多App里都内置了Web网页(Hybrid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是Android里一个叫WebView组件实现 今天,我将献上一份全面介绍 WebView的常见用法。 目录1. 简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrom...

2021-03-01 01:49:06 499

转载 Android 应用工程师的 Binder 原理剖析

一. 前言这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依旧战战兢兢。Binder 之复杂远远不是一篇文章就能说清楚的,本文想站在一个更高的维度来俯瞰 Binder 的设计,最终帮助大家形成一个完整的概念。对于应用层开发的同学来说,理解到本文这个程度也就差不多了。希望更加深入理解 Binder 实现机制的,可以阅读文末的参考资料

2021-03-01 01:37:13 157

转载 Android Handler源码分析

0. 前言做 Android 开发肯定离不开跟 Handler 打交道,它通常被我们用来做主线程与子线程之间的通信工具,而 Handler 作为 Android 中消息机制的重要一员也确实给我们的开发带来了极大的便利。可以说只要有异步线程与主线程通信的地方就一定会有 Handler。那么,Handler 的通信机制的背后的原理是什么?本文带你揭晓。注意:本文所展示的系统源码基于 Android-27 ,并有所删减。1. 重识 Handler我们可以使用 Handler 发送并

2021-03-01 00:18:35 276

转载 RxJava 3.0.0 与 RxAndroid 入门篇

简介Rx ,响应式编程,是一个使用可观察数据流进行异步编程的编程接口。Rx 的使用有助于提高工作效率, 优雅的处理复杂业务场景。Rx 的大部分语言库由 ReactiveX 这个组织负责维护,比较流行的有 RxJava / RxJS / Rx.NET。Rx = Observables + LINQ + Schedulers.RxJava 是响应式编程的Java实现,有以下特性:轻量级框架异步数据处理库扩展的观察者模式,提供了 onNext,onCompleted,onError 方法支

2021-02-28 01:28:07 1768

转载 RxJava3.0.0 操作符篇 - 组合操作符

Zip使用指定函数按顺序结合两个或多个 Observables 发射的数据项,然后发射这个函数返回的结果。它按照严格的顺序应用这个函数。它只发射与发射数据项最少的那个Observable一样多的数据。zip 默认不在任何特定的操作符上执行。Observable<Integer> observable1 = Observable.just(1, 3, 5);Observable<Integer> observable2 = Observable.just(2, 4, 6,

2021-02-28 01:26:30 215

转载 RxJava3.0.0 操作符篇 - 过滤操作符

Debounce仅在过了一段指定的时间还没发射数据时才发射一个数据,会过滤掉发射速率过快的数据项。debounce 默认在 computation 调度器上执行,也可指定调度器。Observable.range(1, 10) .flatMap((Function<Integer, ObservableSource<Integer>>) integer -> { int delay = new Random().nextInt(...

2021-02-28 01:21:21 175

转载 RxJava3.0.0 操作符篇 - 转换操作符

Buffer定期收集 Observable 的数据放进一个数据包裹,然后发射这些数据包裹,而不是一次发射一个值。如果原来的 Observable 发射了一个 onError 通知,buffer 会立即传递这个通知,而不是首先发射缓存的数据,即使在这之前缓存中包含了原始 Observable 发射的数据。buffer(count)每次取count项发射,最后一次发射可能不足count。Observable.range(1, 10) .buffer(3) .su...

2021-02-28 01:10:39 163

转载 RxJava3.0.0 操作符篇 - 创建操作符

Create创建Observable。Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(@NonNull ObservableEmitter<Integer> emitter) throws Throwable { try { for (int i=0; i<10;...

2021-02-28 01:02:06 177

转载 2020年中高级Android面试秘籍(Android高级篇-4)

欢迎来到2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂的Android高级篇下。五、架构设计MVC MVP MVVM原理和区别?架构设计的目的通过设计是模块程序化,从而做到高内聚低耦合,让开发者能更专注于功能实现本身,提供程序开发效率、更容易进行测试、维护和定位问题等等。而且,不同的规模的项目应该选用不同的架构设计。MVCMVC是模型(model)-视图(view)-控制器(controller)的缩写,其中M层处理数据,业务逻辑等;V层处理界面的显示结果

2021-02-26 22:00:30 1238

转载 2020年中高级Android面试秘籍(Android高级篇-2)

Android高级面试题 (⭐⭐⭐)4、跨进程通信。Android中进程和线程的关系?区别?线程是CPU调度的最小单元,同时线程是一种有限的系统资源;而进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。 一般来说,一个App程序至少有一个进程,一个进程至少有一个线程(包含与被包含的关系),通俗来讲就是,在App这个工厂里面有一个进程,线程就是里面的生产线,但主线程(即主生产线)只有一条,而子线程(即副生产线)可以有多个。 进程有自己独立的地址空间,而进程中的线程共享此地址空间

2021-02-26 21:54:33 372

转载 Android主流三方库源码分析(九、深入理解EventBus源码)

一、EventBus使用流程概念1、Android事件发布/订阅框架2、事件传递既可用于Android四大组件间通信3、EventBus的优点是代码简洁,使用简单,事件发布、订阅充分解耦4、首先有一个Publisher发射器,将Event通过Post发送到EventBus总线中,根据Event事件类型匹配相应的订阅者Subscriber。二、源码解析EventBus.getDefault()1、使用了双重校验并加锁的单例模式来创建EventBus实例,里面的成员变量通过Ev.

2021-02-26 21:23:43 108

转载 Android主流三方库源码分析(三、深入理解Glide源码)

相关文章https://www.cnblogs.com/billshen/p/13306285.htmlhttps://blog.csdn.net/songzi1228/article/details/84426165一、基本使用流程Glide最基本的使用流程就是下面这行代码,其它所有扩展的额外功能都是以其建造者链式调用的基础上增加的。GlideApp.with(context).load(url).into(iv);复制代码Glide全部的方法:Glide.with(g.

2021-02-22 18:21:13 329

转载 Android OkHttp Application Intercetor和NetworkInterceptor的区别

OKHTTP异步和同步请求简单分析OKHTTP拦截器缓存策略CacheInterceptor的简单分析OKHTTP拦截器ConnectInterceptor的简单分析OKHTTP拦截器CallServerInterceptor的简单分析OKHTTP拦截器BridgeInterceptor的简单分析OKHTTP拦截器RetryAndFollowUpInterceptor的简单分析OKHTTP结合官网示例分析两种自定义拦截器的区别在了解自定义拦截器之前,先来看一下 OKHTTP 官网提供的示例代码块,Log

2021-02-22 10:43:34 491

转载 Android主流三方库源码分析(二、深入理解Retrofit源码)

Retrofit总结:Http网络请求框架的封装,App应用程序通过Retrofit请求网络,实际上是使用Retrofit接口层封装请求参数,之后由OkHttp完成后续的请求操作,在服务器返回数据之后,OkHttp将原始的结果交给Retrofit,Retrofit根据用户的需求对结果进行解析。Retrofit网络通信8个步骤:1、创建Retrofit实例(构建者模式)2、通过网络请求接口并为接口中的方法添加注解3、通过 动态代理 生成 网络请求对象4、通过 网络请求适配器 将 网络请求对象

2021-02-22 10:26:24 142

转载 Android主流三方库源码分析(一、深入理解OKHttp源码)

这一篇将会对Android的三方网络库OKHttp源码进行深入的分析,在阅读过OKHttp源码和大量其它优秀的OKHttp源码分析文章后,我发现只要搞懂以下这三块,就能证明你对OKHttp有了一个深入的了解。OKHttp请求流程 网络请求缓存处理 连接池首先,补充一点网络知识:一些常用的状态码100~199:指示信息,表示请求已接收,继续处理 200~299:请求成功,表示请求已被成功接收、理解 300~399:重定向,要完成请求必须进行更进一步的操作 400~499:客户端错误,请

2021-02-20 12:04:51 102

原创 Android Studio、JDK路径配置

AS参数设置File encodings --> project encoding (utf-8) 自动显示doc文档窗口提示: editor --> general --> show quick doc on mouse move 打勾 gradle --> 设置本地安装目录,勾选离线工作 appearences --> theme (主题风格) editor --> appearance --> show line numbers、show righ

2021-02-03 00:33:53 8010 2

转载 Android刘海屏适配全方案(华为、小米、Vivo、Oppo)

前言目前市面上的刘海屏和水滴屏手机越来越多了,颜值方面是因人而异,有的人觉得很好看,也有人觉得丑爆了,我个人觉得是还可以。但是作为移动开发者来说,这并不是一件好事,越来越多异形屏手机的出现意味着我们需要投入大量精力在适配上(就不提之后会出的折叠屏手机了)。本文总结了当下主流手机的刘海屏适配方案,鉴于目前Android碎片化的情况,想要覆盖所有的机型是不可能的,但是能适配一些是一些,总比什么都不做要好。所谓刘海屏,指的是手机屏幕正上方由于追求极致边框而采用的一种手机解决方案。因形似刘海儿而得名——来自

2021-02-01 13:04:47 3481

空空如也

空空如也

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

TA关注的人

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