- 博客(28)
- 资源 (8)
- 收藏
- 关注
原创 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 2874 2
原创 数据库的四大特征和隔离级别
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。事务具有以下 4 个基本特征:数据库的四大特征:1. 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。2. 一致性(Co
2021-04-27 15:25:05 229
原创 Linux 的软链接和硬链接
Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。硬连接硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex)。在Linux 中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
2021-04-27 15:15:50 134
原创 Java中线程的创建方式及线程池的工作原理
线程的定义概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。Java中线程的四种创建方式1. 继承 Thread 类实现多线程示例:public class ThreadDemo extends Thread { @Override publi
2021-04-22 16:58:12 186
原创 HashMap 和 HashTable 的区别
1.容器整体结构:HashMap的key和value都允许为null,HashMap遇到key为null的时候,调用putForNullKey方法进行处理,而对value没有处理。Hashtable的key和value都不允许为 null。Hashtable遇到null,直接返回NullPointerException。2.容量设定与扩容机制:HashMap默认初始化容量为16,并且容器容量一定是2的n次方,扩容时,是以原容量2倍的方式进行扩容。Hashtable默认初始化容量为11,.
2021-04-22 16:53:45 99
原创 Android—常用热修复框架
前言热修复即<打补丁>,当一个app上线后,如果发现重大的bug,需要紧急修复。常规的做法是修复bug,然后重新打包,再上线到各个渠道。这种方式的成本高,效率低。于是热修复技术应运而生,热修复技术一般的做法是应用启动的时候,主动去服务端查询是否有补丁包,有就下载下来,并在下一次启动的时候生效,这样就可以快速解决线上的紧急bug。热修复的优势无需重新打包发布安装包,用户无感知修复,无需下载最新的应用,节省用户流量;修复的成功率高,避免线上bug带来的业务损失,把损失率降到.
2021-04-22 16:31:23 3069
原创 Android 组件化、模块化、插件化区别详解
前言组件化与模块化已经深入体现到软件开发当中,也是为了让开发者更好的去解决软件上的高耦合、低内聚、无重用的3大代码问题。网上有很多相关内容的介绍文章,各个作者都有自己的一些想法或者总结,看得比较乱,在实践过程中也存在不少疑惑,很多时候不知道选择用组件还是模块,或者有时候根本分不清自己这得是组件还是模块。所以写了下这篇文章,对组件化、模块化、插件化进行一个详细的讲解,希望小伙伴都可以更了解这三者的区别。单工程模式再介绍组件化,模块化、插件化之前,我们不得不说下单工程模式,移动开发诞生之初,我们开发
2021-04-15 17:13:38 847
转载 Android源码分析:LruCache 缓存机制实现原理
一、Android中的缓存策略一般来说,缓存策略主要包含缓存的添加、获取和删除这三类操作。如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的。当缓存满了之后,再想其添加缓存,这个时候就需要删除一些旧的缓存并添加新的缓存。因此LRU(Least Recently Used)缓存算法便应运而生,LRU是近期最少使用的算法,它的核心思想是当缓存满时,会优先淘汰那些近期最少使用的缓存对象,有效的避免了OOM的出现。在Android中采用L
2021-04-14 14:15:32 124
原创 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 444
原创 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 479
原创 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 935
原创 Android-图片加载库Coil介绍
框架介绍Coil是Android上的一个全新的图片加载框架,它的全名叫做coroutine image loader,即协程图片加载库。与传统的图片加载库Glide,Picasso或Fresco等相比。该具有轻量(只有大约1500个方法)、快、易于使用、更现代的API等优势。它支持GIF和SVG,并且可以执行四个默认转换:模糊,圆形裁剪,灰度和圆角。并且是全用Kotlin编写,如果你是纯Kotlin项目的话,那么这个库应该是你的首选。这应该是一个很新的一个图片加载库,完全使用kotlin编写,使用了
2021-01-21 16:26:38 1865
原创 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 301
原创 Android-EventBus框架详细介绍与简单实现
常用事件消息传递一个实现了监听器接口的类,必须把它自身注册到它想要监听的类中去 使用广播,内部的实现都需要IPC(进程间通信),从传递效率上来讲,可能并不太适合上层的组件间通信 Activity间的消息传递便是通过startActivityForResult和onActivityResult,会产生较多的状态或者逻辑判断,而且Intent或者Bundle传值还得监测类型,容易发生错误EventBus概述EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent
2020-12-17 13:15:08 126
原创 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 2466 5
原创 Android——第三方Facebook授权登录获取用户信息
由于项目中需要使用Facebook进行一键登录,所以记录下步骤,其实小伙伴直接看官网也可以,介绍的蛮详细的,先看下效果图吧。遵循以下步骤将Facebook登录添加到您的应用。Facebook开发者网站:https://developers.facebook.com/apps/1.选择应用或新建应用选择应用或新建应用,将应用相关信息输入以下代码片段。2.下载Facebook应用点击下方的按钮,下载Facebook应用。下载Android版Facebook3...
2020-11-13 16:04:18 5091 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 2738 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 142
原创 Dart编程语言入门——面向对象编程
类于对象1.定义使用关键字class声明一个类 使用关键字new创建一个对象,new可以省略 所有对象都继承与Object类2.属性与方法属性默认会生成getter和setter方法 使用final声明的属性只有getter方法 属性和方法通过 . 访问 方法不能被重载3.类及成员可见性Dart中可见性以library(库)为单位 默认情况下,每一个Dart文件就是一个库 使用_表示库的私有性 使用import导入库计算属性顾名思义,计算属性的值是通过计算而来,本来
2020-10-19 16:29:33 112
原创 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 954
原创 Dart编程语言入门——运算符和控制语句
运算符1.算术运算符加减乘除:+,-,*,/,~/,% 递增递减:++var,var++,--var,var--2.关系运算符运算符:==,!=,>,<,>=,<= 判断内容是否相同使用==3.逻辑运算符运算符:!,&&,|| 针对布尔类型运算4.赋值运算符基础运算符:=,??== 复合运算符:+=,-=,*=,/=,%=,~/=5.条件表达式三目运算符:condition?expr1:expr2 ??运算符:expr1??e
2020-10-19 16:28:10 87
原创 Dart编程语言入门——数据类型
变量与常量1.变量使用var声明变量,可以赋予不同类型的值 最好在声明变量时进行初始化,当然也可以在使用时进行初始化 未初始化时,默认值为null 使用关键字Final,声明一个只能赋值一次的变量2.常量使用const声明常量 使用const声明的必须是编译期常量,(编译期常量:在编译阶段就可以确定值)数值型Number,继承num1.整型 Int2.浮点型 double3.数值型操作运算符:+,-,*,/,~/(取整数),%(取余数) 常用属性:isNaN(是否是非数字)
2020-10-19 16:26:42 124
原创 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 209
原创 Flutter超高性能和生态环境介绍
1. Flutter120fps超高性能fps:每秒传输帧数,可以简单理解为每秒画面数采用了GPU渲染技术,一般是使用CPU,GPU是一种图形显示,用Flutter做出来的界面完全符合游戏的标准,游戏的性能可以达到120桢每秒,因为是渲染成了图形,这是谷歌新出的一种技术用在了Flutter上120桢的效果有多好呢,日常电视电影的帧数是24fps ,效果已经很好了,液晶显示器可以达到60hz,相当于60fps,而游戏可以达到80fps,可以很流畅的运行游戏,而Flutter可以达到120fps,所以
2020-10-19 16:24:33 297
原创 Flutter介绍和主流框架的对比
解读Flutter的官方介绍Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。解读重要的三点:跨平台:Linux,Android,IOS,Fuchsia(谷歌新出的操作系统),甚至支持嵌入式开发 原生用户界面:它是原生的,让我们体验更好,性能更好 开源免费:完全开源,可以进行商用Flutter与主流框架的对比
2020-10-19 16:22:50 1039
原创 Android——自定义控件View详解
为什么要自定义控件?1.特定的显示风格2.处理特有的用户交互例:比如原本TextView不能滑动里面的文字,通过自定义控件实现3.优化我们的布局例:通过嵌套实现复杂的布局,但是绘制和测量的效率慢,通过自定义控件实现,提升效率4.封装等例:app内很多控件可以复用,比如首页底部的tab按钮,封装成自定义控件,方便后续使用如何自定义控件?1.自定义属性的声明与获取提取自定义控件的属性,去声明,然后在构造方法里去获取。分析需要的自定义属性:颜色,文字大小,文字,图标等
2020-10-19 16:20:50 216
原创 android百度地图,路线规划增加没有路的虚线。
百度地图的开发过程中,发现路径规划的api接口有一个缺陷,就是只显示有路的路线,在没有道路的情况下,比如我定位到了大厦里面,那路线就是在大厦附近的道路上起始的。而很多单车app我发现解决了这个问题,我也是做单车产品的,然后发现这个问题,百度无果,自己想了一个方法添加了额外的路线。百度地图app有这个功能,可能api没有完善吧。
2017-05-02 11:15:45 1660
原创 Android百度地图API开发——骑行导航。
由于项目中要用到骑行导航这个功能,使用的是百度地图。而百度地图的骑行导航功能也是推出不久的,官网并没有文档说明,但是在demo里有代码块。百度搜了很久,也没有这方面的详细介绍,以及独立的demo。所以写个文章详细介绍一下骑行导航的功能,和如何进行开发,附带独立的demo下载地址。(好几年不写技术博客了,讲解的如果不详细请勿拍砖阿)开发流程:1.百度申请key,这块就
2017-03-14 16:28:47 4373
图片点击放大到全屏、可以手势缩放
2014-11-24
首次安装进入引导页,之后到欢迎页
2014-08-27
sql+服务端+手机端(注册登录餐馆列表,UI+代码详细)
2014-05-08
Android ViewFlipper图片水平滑动
2014-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人