网站建设

一文彻底搞懂Kotlin中的协程

产生背景 为了解决异步线程产生的回调地狱 //传统回调方式api.login(phone,psd).enquene(new CallbackUser(){ public void onSuccess(User user){ api.submitAddress(address).enquene(new CallbackResult(){ public void onSuccess...

Android okhttp的启动流程及源码解析

目录 前言 什么是OKhttp OkHttp是如何做网络请求的 1.它是如何使用的? 1.1 通过构造者模式添加 url,method,header,body 等完成一个请求的信息 Request 对象 1.2 同样通过构造者模式创建一个...

详解Android 中的文件存储

目录 概要 独立文件 专属文件 internal storage external storage 概要 当我们查看手机的文件管理器的时候,会发现里面的文件五花八门,想要找到自己项目所对应的文件非常困难,甚至有可能...

Android 处理 View 重复点击的多种方法

1、抽象类 //实现 View.OnClickListener 接口public abstract class OnThrottleClickListener implements View.OnClickListener { private static final String TAG = "OnThrottleClickListener"; private static final int SKIP_DURATION = 300;//mi...

Android View.Post 的原理及缺陷

目录 一、View.post(Runnable) 1、AttachInfo 2、HandlerActionQueue 二、Handler.post(Runnable) 三、onCreate onResume 四、View.post(Runnable) 的兼容性 很多开发者都了解这么一个知识点:在 Activity 的 onCreate 方法...

Android如何解析异构列表

目录 前言 实现方案 抽象封装 总结 前言 开发业务需求时,遇到了列表中包含完全不同类型的数据结构。这种列表我们称为异构列表。以聊天记录列表为例 [{"msgType" : "text","id" : "1","co...

Android如何优雅的处理重复点击

目录 之前的处理方式 现在的处理方式 其他场景处理重复点击 间接设置点击 富文本 列表 数据绑定 总结 项目地址 一般手机上的 Android App,主要的交互方式是点击。用户在点击后,Ap...

Android 优雅的实现通用格式化编辑

目录 使用 格式化编辑手机号 格式化编辑身份证号 设置监听 移除格式化的文本 实现原理 项目地址 格式化编辑的需求一般是从编辑手机号开始的,UI 给出的效果不是11个连续的数字,而...

Android打包上传AAR文件到Maven仓库的示例

目录 1、创建 Android 库 2、上传aar包至Maven私服 3、其他项目使用 4、QA 1、创建 Android 库 按以下步骤在项目中创建新的库模块: 依次点击 File New New Module。 在随即显示的 Create New Module 窗...

Android Insets相关知识总结

目录 什么是Insets? Insets相关类 InsetsState InsetsStateController InsetsSource InsetsSourceConsumer(ImeInsetsSourceConsumer) ImeInsetsSourceConsumer InsetsController InsetsChanged、InsetsControlChanged方法 onStateChanged on...

Android自定义输入法软键盘

本文实例为大家分享了Android自定义输入法软键盘的具体代码,供大家参考,具体内容如下 1 功能描述 触屏设备主界面中有一个文本编辑框,底部区域固定显示一个数字键盘,键盘中除...

android自定义view实现圆周运动

本文实例为大家分享了android自定义view实现圆周运动的具体代码,供大家参考,具体内容如下 思想 自定义Animation,自己定义半径,相当于原来控件的位置为(0,0),按照每个角度区间,...

Android生成随机数的方法实例

本文实例为大家分享了Android生成随机数的具体代码,供大家参考,具体内容如下 java文件 package com.example.my_xm_bw_luowei;import android.os.Bundle;import android.util.Log;import android.view.View;import andro...

Android 解决WebView多进程崩溃的方法

目录 问题 问题分析 解决方案 问题 在android 9.0系统上如果多个进程使用WebView需要使用官方提供的api在子进程中给webview的数据文件夹设置后缀: WebView.setDataDirectorySuffix(suffix); 否则将会...

Android webView字体突然变小的原因及解决

目录 背景 原因分析 setLoadWithOverviewMode 端内其他地方排查 总结 WebView 字体常见的其他坑 手机设置字体大小导致h5页面在webview中变形 Web js 网页解决方案 客户端 WebView 禁止缩放 小结 背景...

Android Studio使用Profiler来完成内存泄漏的定位

目录 目标 引用 步骤 模拟内存泄漏 使用Profiler 来完成定位 目标 使用Android Studio 4.1来完成内存泄漏的定位 目前网上大多数的文章都是在介绍Profile的使用,可以帮忙你检查出有内存泄漏...

详解Android JetPack之LiveData的工作原理

目录 前言 介绍 原理分析 前言 本篇文章主要讲解LiveData工作的原理,如果还不知道LiveData如何用的话,请参考官方文档。 LiveData的讲解涉及到了Lifecycle的知识,如果你还不了解LifeCycle,...

android中colors.xml颜色设置资源文件的方法

1. 打开res目录下的values文件夹,双击打开colors.xml文件进行编辑 上代码 xml version="1.0" encoding="utf-8"resources color name="colorPrimary"#008577/color color name="colorPrimaryDark"#00574B/color color name="colorAccent...

Android 实现抢购倒计时功能的示例

目录 一、效果图 二、思路 三、实现步骤: 1、时间转换的工具类 2、时间倒计时工具类 3、布局文件 4、倒计时显示处理 5、开始倒计时 一、效果图 二、思路 算多少秒,秒数取余60,(...

Android 常见bug汇总及解决方案

目录 1、关于使用OkHttp运行时出现的错误 2、图片轮播控件com.youth.banner使用Glide异步加载图片时发生的崩溃 3、接入容联七陌客服系统,进入客服界面时闪退问题 4、android 7.0系统解决拍照...

Android如何实现年月选择器功能

目录 一、效果图 二、实现步骤: 1、依赖库 2、xml布局文件 3、添加数据 4、设置选择器弹出框 5、设置弹出框dialog样式 6、设置点击事件弹出 四、总结 开发过程中,年月的选择功能还是...

Android如何使用Bmob后端云实现失物招领功能

目录 一、创建账号 二、网站后台创建应用(如图) 三、AndroidStudio SDK导入信息配置 四、应用中使用详情 1、启动页: 2、由登录界面进入注册页面,进行账户注册: 3、注册成功后回到登录界...

Android 实现九宫格抽奖功能

目录 效果展示 实现步骤 1.生成抽奖矩形: 2.添加奖品图片: 3.实现抽奖动画: 4.实现动态设置参数: 5.添加抽奖结果回调 效果展示 实现步骤 1.生成抽奖矩形: 其中每个矩形的宽高相...

Android如何解决虚拟按键栏遮挡问题

最近在公司的项目中 , 华为用户反馈出了一个问题 , 华为手机底部有虚拟按键栏把应用的底部内容遮挡住了 , 现在已经把这个问题解决了 , 记录一下,给各位遇到相同问题的童鞋做一下参...

Android如何加载Base64编码格式图片

Base64是传输字节码的编码,Android开发过程中,图片的加载多数是请求URL路径或者加载本地的图片,当然也有加载服务器用Base64编码过的图片,比如图形验证码。当然图形验证码我们An...

Android Retrofit框架的使用

目录 Retrofit介绍 Retrofit优点 Retrofit的使用 1.引入依赖项 2.添加网络权限 3.编写Retrofit辅助类 4.定义ApiService 5.实现接口方法 Retrofit介绍 Retrofit是Square开源的一款基于OkHttp(也是他家的)封...

Android系统服务是如何获取的

目录 关于获取系统服务的猜想 获取系统服务源码实现 真正的系统服务提供者 关于获取系统服务的猜想 Android获取系统服务一般都需要用getSystemService指定系统服务名称获取: val wm = g...

如何自己实现Android View Touch事件分发流程

目录 MotionEvent View ViewGroup 事件拦截 寻找目标视图,分发ACTION_DOWN 分发除ACTION_DOWN外的其他事件 使用 总结 Android Touch事件分发是Android UI中的重要内容,Touch事件从驱动层向上,经过Inpu...

自己实现Android View布局流程

目录 MeasureSpec LayoutParam View ViewGroup Text Column 使用 总结 相关阅读:尝试自己实现Android View Touch事件分发流程 Android View的布局以ViewRootImpl为起点,开启整个View树的布局过程,而布局过程...

Android 侧滑抽屉菜单的实现代码

目录 前言 正文 一、创建项目 二、添加滑动菜单 三、UI美化 四、添加导航视图 五、菜单分类 六、动态菜单 七、源码 运行效果图: 前言 滑动菜单相信都不会陌生,你可能见过很多这...

Android事件分发机制全面解析

目录 事件分发机制 ViewGroup.dispatchTouchEvent 源码分析 View.dispatchTouchEvent 和 View.onTouchEvent 源码分析 事件分发机制 事件分发机制的两个阶段: 分发:事件从父视图往子视图分发,被拦截后...

Android 简单服务定位器模式实现

目录 引入 API 使用 依赖注入(Dependency Injection)和服务定位器(Service Locator)是实现控制反转(Inversion of Control)的两种主要手段。 Android的主流依赖注入框架有:Dagger 和 Kion 这些依赖注入框架...

Kotlin + Flow 实现Android 应用初始化任务启动库

目录 特性 引入依赖 使用 特性 Kotlin + Flow 实现的 Android 应用初始化任务启动库。 支持模块化,按模块加载任务 可指定工作进程名称,main 表示仅在主进程运行,all 表示在所有进程运行...

Android使用 Coroutine + Retrofit打造简单的HTTP请求库

基于 kotlin/coroutine/retrofit/jetpack 打造,100来行代码,用法超级简单舒适 设置默认Retrofit工厂和全局错误处理程序 HttpCall.init(retrofitFactory = { // ...}, errorHandler = { throwable - // ...}) 基本用法...

Android如何实现动态滚动波形图(心电图)功能

目录 一、前言 二、效果图 三、功能实现 四、如何使用 一、前言 最近涉及的某个医疗相关的业务,传感器数据传递上来需要实现示波器的效果,心电图的效果,目前交付效果还算理想...

Android如何使用Glide加载清晰长图

目录 Glide概述 Glide的使用: 最近项目中使用的是Glide加载图片,上线后用户反馈图片模糊,经过测试后发现是用户点击超长图放大的时候,图片变的模糊看不起,这很影响用户的体验,...

Android端代码量非常小的分页加载库

前言 RecyclerView几乎在每个app里面都有被使用,但凡使用了列表就会采用分页加载进行数据请求和加载。android 官方也推出了分页库,但是感觉只有kotlin一起使用才能体会到酸爽。Java 版...

从源码角度分析Android的消息机制

目录 前言 ThreadLocal的工作原理 Looper的工作原理 Handler的工作原理 总结 参考资料 前言 说到Android的消息机制,那么主要的就是指的Handler的运行机制。其中包括MessageQueue以及Looper的工作过...

Android nativePollOnce函数解析

目录 android_os_MessageQueue.cpp Looper.cpp 1.epoll基础知识介绍 epoll工作流程分析案例 2. pollOnce函数分析 Looper.cpp Looper.cpp 3.添加监控请求 android_app_NativeActivity.cpp Looper.cpp 4.处理监控请求 Looper.c...

Android LiveData使用需要注意的地方

目录 1.回调通知 2.数据倒灌 3.事件包装 关于LiveData是什么以及基本使用方式,请参考官方文档:developer.android.com/topic/libra… 简单来说,LiveData是一个可被观察的数据容器类。它将数据包...

Android 如何获取设备唯一标识

目录 一. 先简单总结一下比较常见的几个解决方案的弊端: 1. IMEI 2. Android ID 3. MAC地址 二. uuid + 本地文件,实现一个通用解决方案 1. 思路 2. 解决手机访问SDK权限问题 3. 适配 Android 11...

详解Android系统启动过程

目录 计算机是如何启动的 引导阶段 加载内核阶段 Android的启动过程 init进程 init.rc 文件 service_manager 进程 surface_flinger 进程 media_server 进程 Zygote 进程 system_server 进程 ActivityManagerService 启...

Android AMS启动详解

目录 启动 startService AMS的创建 start() setSystemProcess 后续 goingCallBack startHomeOnAllDisplays 总结: 启动 在Android系统启动流程中中我们提到过,AMS是在system_service中启动的, //frameworks/base/servi...

Android zygote启动流程详解

目录 对zygote的理解 作用 启动流程 启动入口 脚本讲解 启动过程 App_main::main AndroidRuntime::start 对zygote的理解 在Android系统中,zygote是一个native进程,是所有应用进程的父进程。而zygote则是...

Android ServiceManager的启动和工作原理

目录 ServiceManager启动 binder_open binder_become_context_manager binder_loop 系统服务注册 ServiceManager的Binder对象获取 添加Service 系统服务获取 do_find_service bio_put_ref binder_parse 总结 ServiceManager启动 所...

浅谈Flutter解析JSON三种方式

Dart实体类格式 class CategoryMo { String name; int count; CategoryMo({this.name, this.count}); //将map转成mo CategoryMo.fromJson(MapString, dynamic json) { name = json['name']; count = json['count']; } //将mo转成map,可缺省 M...

详解android是如何管理内存的

目录 前言 Java Heap 进程内存分配 内存不足管理 GC 垃圾回收 内核交换守护进程 低内存终止守护进程 最后 前言 很高兴遇见你~ 内存优化一直是 Android 开发中的一个非常重要的话题,他直...

Android 如何实现弹窗顺序&优先级控制

一般在项目首页中,往往会有多个对话框需要弹出,比如活动弹窗、更新弹窗、评分弹窗等等,而且这些弹窗是有优先级顺序的。这些弹窗一般是通过接口请求后返回结果再显示的,如...

Android使用插件实现代码混淆

目录 1.下载AndroidProPlugin插件并安装重启 2.Android Studio安装插件 3.成功安装AndroidProguardPlugin插件后 我们在打包的过程中,需要对代码进行混淆处理,可项目中需要混淆的地方很多,特别是...

Android运动健康睡眠自定义控件的实现

目录 效果图 代码 效果图 代码 /** * * 日图表 * zrj 2020/8/25 */class SleepDayChart(context: Context, attrs: AttributeSet) : View(context, attrs) { //屏幕宽高 private var scrWidth = 0f private var scrHeight = 0f private var...