![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 71
多仔百事宅
Android女程,14年入坑到现在的肥宅仔,博客写的不多,想起来就写点,有问题可私信,看见会回。
展开
-
Android studio Handler划线过期警告解决方法
解决办法方法一:忽略警告,可以在类名前加上如下代码@SuppressWarnings("deprecation")方法二:(推荐)将代码替换为如下,方法内新增Looper.getMainLooper()Handler handler = new Handler(Looper.getMainLooper()){ @SuppressLint("HandlerLeak") @Override public void handleMessage(@NonNu..原创 2021-06-22 15:30:24 · 3036 阅读 · 2 评论 -
Java中线程的创建方式及线程池的工作原理
线程的定义概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。Java中线程的四种创建方式1. 继承 Thread 类实现多线程示例:public class ThreadDemo extends Thread { @Override publi原创 2021-04-22 16:58:12 · 192 阅读 · 0 评论 -
Android—常用热修复框架
前言热修复即<打补丁>,当一个app上线后,如果发现重大的bug,需要紧急修复。常规的做法是修复bug,然后重新打包,再上线到各个渠道。这种方式的成本高,效率低。于是热修复技术应运而生,热修复技术一般的做法是应用启动的时候,主动去服务端查询是否有补丁包,有就下载下来,并在下一次启动的时候生效,这样就可以快速解决线上的紧急bug。热修复的优势无需重新打包发布安装包,用户无感知修复,无需下载最新的应用,节省用户流量;修复的成功率高,避免线上bug带来的业务损失,把损失率降到.原创 2021-04-22 16:31:23 · 3174 阅读 · 0 评论 -
Android 组件化、模块化、插件化区别详解
前言组件化与模块化已经深入体现到软件开发当中,也是为了让开发者更好的去解决软件上的高耦合、低内聚、无重用的3大代码问题。网上有很多相关内容的介绍文章,各个作者都有自己的一些想法或者总结,看得比较乱,在实践过程中也存在不少疑惑,很多时候不知道选择用组件还是模块,或者有时候根本分不清自己这得是组件还是模块。所以写了下这篇文章,对组件化、模块化、插件化进行一个详细的讲解,希望小伙伴都可以更了解这三者的区别。单工程模式再介绍组件化,模块化、插件化之前,我们不得不说下单工程模式,移动开发诞生之初,我们开发原创 2021-04-15 17:13:38 · 871 阅读 · 0 评论 -
Android源码分析:LruCache 缓存机制实现原理
一、Android中的缓存策略一般来说,缓存策略主要包含缓存的添加、获取和删除这三类操作。如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的。当缓存满了之后,再想其添加缓存,这个时候就需要删除一些旧的缓存并添加新的缓存。因此LRU(Least Recently Used)缓存算法便应运而生,LRU是近期最少使用的算法,它的核心思想是当缓存满时,会优先淘汰那些近期最少使用的缓存对象,有效的避免了OOM的出现。在Android中采用L转载 2021-04-14 14:15:32 · 129 阅读 · 0 评论 -
Object类中的方法及作用详解
一、引言Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。二、Object方法详解通过阅读源码可知Object中含有:Object()、getClass()、hashCode()、equals()、clone()、toString()、noti原创 2021-04-13 13:35:22 · 455 阅读 · 0 评论 -
Android ANR:Application Not Responding详解
一、ANR概述ANR,全称为Application Not Responding,也就是应用程序无响应。如果 Android 应用的界面线程处于阻塞状态的时间过长,就会触发“应用无响应”(ANR) 的错误。此时系统会向用户显示一个对话框,ANR 对话框会为用户提供强行退出应用的选项。二、ANR的四种类型在Android系统中,应用程序的响应由Activity Manager及Window Manager两个系统服务所监控。通常情况下,应用出现如下四类情况时,系统将报ANR:KeyDispa原创 2021-04-12 15:10:26 · 515 阅读 · 0 评论 -
Android 10适配获取设备信息
开发过程发现一点适配的问题记录下来,之前在Android获取设备id时一直用AndroidUtilCode的工具类。implementation 'com.blankj:utilcode:1.30.6'// if u use AndroidX, use the followingimplementation 'com.blankj:utilcodex:1.30.6'PhoneUtils.getDeviceId(this)大概的方法也就是如下的一段:@Suppr...原创 2021-04-12 14:52:29 · 948 阅读 · 0 评论 -
Android-图片加载库Coil介绍
框架介绍Coil是Android上的一个全新的图片加载框架,它的全名叫做coroutine image loader,即协程图片加载库。与传统的图片加载库Glide,Picasso或Fresco等相比。该具有轻量(只有大约1500个方法)、快、易于使用、更现代的API等优势。它支持GIF和SVG,并且可以执行四个默认转换:模糊,圆形裁剪,灰度和圆角。并且是全用Kotlin编写,如果你是纯Kotlin项目的话,那么这个库应该是你的首选。这应该是一个很新的一个图片加载库,完全使用kotlin编写,使用了原创 2021-01-21 16:26:38 · 1883 阅读 · 0 评论 -
Flutter常用组件的讲解
TextWidget文本组件讲解TextWidget的常用属性TextAlign:文本对齐属性(TextAlign.center,TextAlign.left ,TextAlign.right ,TextAlign.start ,TextAlign.end) maxLines:文本显示的最大行数 overflow:控制文本的溢出效果child: Text("测试文本,测试文本内容显示",textAlign: TextAlign.left, maxLines: 1, overf原创 2020-12-17 13:16:47 · 307 阅读 · 0 评论 -
Android-EventBus框架详细介绍与简单实现
常用事件消息传递一个实现了监听器接口的类,必须把它自身注册到它想要监听的类中去 使用广播,内部的实现都需要IPC(进程间通信),从传递效率上来讲,可能并不太适合上层的组件间通信 Activity间的消息传递便是通过startActivityForResult和onActivityResult,会产生较多的状态或者逻辑判断,而且Intent或者Bundle传值还得监测类型,容易发生错误EventBus概述EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent原创 2020-12-17 13:15:08 · 132 阅读 · 0 评论 -
Android网络请求忽略https证书验证
在使用Volley和OkHttp,Retrofit的时候,访问https的网站,经常会碰到一个异常就是javax.net.ssl.SSLHandshakeException,大致就是证书相关的异常。一般这种情况下会报的异常是这样的:javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found..原创 2020-12-17 13:12:46 · 2892 阅读 · 6 评论 -
Android——第三方Facebook授权登录获取用户信息
由于项目中需要使用Facebook进行一键登录,所以记录下步骤,其实小伙伴直接看官网也可以,介绍的蛮详细的,先看下效果图吧。遵循以下步骤将Facebook登录添加到您的应用。Facebook开发者网站:https://developers.facebook.com/apps/1.选择应用或新建应用选择应用或新建应用,将应用相关信息输入以下代码片段。2.下载Facebook应用点击下方的按钮,下载Facebook应用。下载Android版Facebook3...原创 2020-11-13 16:04:18 · 5299 阅读 · 1 评论 -
Android——第三方LINE授权登录获取用户信息
由于项目中需要使用LINE进行一键登录,所以记录下步骤,其实小伙伴直接看官网也可以,介绍的蛮详细的,先看下效果图吧。1605177210772.gif将库导入项目在模块级build.gradle文件中添加LINE SDK依赖项。repositories { ... jcenter()}dependencies { ... implementation 'com.linecorp:linesdk:5.0.1' ...}添加Andro.原创 2020-11-13 10:12:03 · 2883 阅读 · 1 评论 -
Flutter开发环境的搭建详解
Flutter开发环境的安装1.系统的基本要求操作系统:windows7以上64位操作系统 磁盘空间:大于3G,最好可以达到5G2.Java环境的安装Java环境下载安装完成后在终端里使用java命令检查3.Flutter SDK的安装下载地址:https://flutter.io/sdk-archive/#windows配置环境变量flutter doctor命令的使用微信截图_20201020143146.png4.Android studio的介绍和安装原创 2020-10-21 13:51:22 · 147 阅读 · 0 评论 -
Dart编程语言入门——面向对象编程
类于对象1.定义使用关键字class声明一个类 使用关键字new创建一个对象,new可以省略 所有对象都继承与Object类2.属性与方法属性默认会生成getter和setter方法 使用final声明的属性只有getter方法 属性和方法通过 . 访问 方法不能被重载3.类及成员可见性Dart中可见性以library(库)为单位 默认情况下,每一个Dart文件就是一个库 使用_表示库的私有性 使用import导入库计算属性顾名思义,计算属性的值是通过计算而来,本来原创 2020-10-19 16:29:33 · 122 阅读 · 0 评论 -
Dart编程语言入门——方法&枚举&类型
方法1.方法定义返回类型 方法名(参数1,参数2,...){ 方法体... return 返回值 }void main(List args) {print(getPerson("多仔",18));}String getPerson(String name,int age){ return "name=$name,age=$age";}方法特性 方法也是对象,并且有具体类型Function 返回值类型,参数类型都可以省略 箭头语法:=>expr是{.原创 2020-10-19 16:28:53 · 979 阅读 · 0 评论 -
Dart编程语言入门——运算符和控制语句
运算符1.算术运算符加减乘除:+,-,*,/,~/,% 递增递减:++var,var++,--var,var--2.关系运算符运算符:==,!=,>,<,>=,<= 判断内容是否相同使用==3.逻辑运算符运算符:!,&&,|| 针对布尔类型运算4.赋值运算符基础运算符:=,??== 复合运算符:+=,-=,*=,/=,%=,~/=5.条件表达式三目运算符:condition?expr1:expr2 ??运算符:expr1??e原创 2020-10-19 16:28:10 · 94 阅读 · 0 评论 -
Dart编程语言入门——数据类型
变量与常量1.变量使用var声明变量,可以赋予不同类型的值 最好在声明变量时进行初始化,当然也可以在使用时进行初始化 未初始化时,默认值为null 使用关键字Final,声明一个只能赋值一次的变量2.常量使用const声明常量 使用const声明的必须是编译期常量,(编译期常量:在编译阶段就可以确定值)数值型Number,继承num1.整型 Int2.浮点型 double3.数值型操作运算符:+,-,*,/,~/(取整数),%(取余数) 常用属性:isNaN(是否是非数字)原创 2020-10-19 16:26:42 · 127 阅读 · 0 评论 -
Dart语言介绍以及环境搭建
Dart语言介绍Dart是Google发布的一门开源编程语言 Dart初期目标是成为下一代的web开发语言 Dart目前已可用于全平台开发 Dart是一门面向对象的编程语言应用场景web开发 跨平台移动应用开发(Fultter) 脚本或服务端开发Dart环境搭建1. Dart SDK安装,可以参考官方网站:https://www.dartcn.com/installWindows平台:choco install dart-sdk Linux平台:sudo apt-get in原创 2020-10-19 16:25:29 · 219 阅读 · 0 评论 -
Flutter超高性能和生态环境介绍
1. Flutter120fps超高性能fps:每秒传输帧数,可以简单理解为每秒画面数采用了GPU渲染技术,一般是使用CPU,GPU是一种图形显示,用Flutter做出来的界面完全符合游戏的标准,游戏的性能可以达到120桢每秒,因为是渲染成了图形,这是谷歌新出的一种技术用在了Flutter上120桢的效果有多好呢,日常电视电影的帧数是24fps ,效果已经很好了,液晶显示器可以达到60hz,相当于60fps,而游戏可以达到80fps,可以很流畅的运行游戏,而Flutter可以达到120fps,所以原创 2020-10-19 16:24:33 · 316 阅读 · 0 评论 -
Flutter介绍和主流框架的对比
解读Flutter的官方介绍Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。解读重要的三点:跨平台:Linux,Android,IOS,Fuchsia(谷歌新出的操作系统),甚至支持嵌入式开发 原生用户界面:它是原生的,让我们体验更好,性能更好 开源免费:完全开源,可以进行商用Flutter与主流框架的对比原创 2020-10-19 16:22:50 · 1056 阅读 · 0 评论 -
Android——自定义控件View详解
为什么要自定义控件?1.特定的显示风格2.处理特有的用户交互例:比如原本TextView不能滑动里面的文字,通过自定义控件实现3.优化我们的布局例:通过嵌套实现复杂的布局,但是绘制和测量的效率慢,通过自定义控件实现,提升效率4.封装等例:app内很多控件可以复用,比如首页底部的tab按钮,封装成自定义控件,方便后续使用如何自定义控件?1.自定义属性的声明与获取提取自定义控件的属性,去声明,然后在构造方法里去获取。分析需要的自定义属性:颜色,文字大小,文字,图标等原创 2020-10-19 16:20:50 · 223 阅读 · 0 评论