- 博客(29)
- 问答 (1)
- 收藏
- 关注
原创 Android 中容易触发内存泄漏的点,与相应的解决方式
Android 内存泄漏的几种可能:一般内存泄漏的原因是:由忘记释放分配的内存导致的(cursor、stream等)逻辑内存泄漏的原因是:当应用不再需要这个对象,仍未释放该对象的所有引用。(1)static Activity:在类中定义了静态Activity变量,把当前运行的Activity实例赋值于这个静态变量,如果这个静态变量在Activity生命周期结束后没有清空,就会导致内存泄漏。因为static变量时贯穿这个应用的生命周期的,导致这个Activity会一直存在应用进程中。 s...
2020-09-09 11:27:35
224
1
原创 自定义控件---带触摸效果的饼状图
/** * 难点在于: * (1)触摸事件的处理: * 获取点击的点p,查看p点的坐标 ,根据圆心和p点坐标求斜率,根据斜率Math.atan算出点击点的角度, * 查看点击角度位于哪个角度区间内,确定颜色块索引,然后触发重绘。 * * 重绘时根据颜色块索引,来确定哪一块区域是要放大的,剩下的区域要恢复原大小。 * 颜色块放大过程:根据每个颜色块中点所属象限,来动态调整圆弧对应矩形的上下左右值。 * */publi.
2020-08-27 17:40:58
258
原创 自定义控件---自定义钟表
private Context mContext;/** * 画笔 */private Paint mPaint;/** * 控件的宽 */private int mWidth;/** * x方向的圆心坐标 */private int center;/** * 钟表的半径 */private int mRadio;/** * 圆环的宽 */private int strokeWidth = 8;/** * 当前小时 */private int mCu.
2020-08-27 15:13:47
195
原创 retrofit注解使用规范
再使用retrofit的时候,难免有时候会忘记retrofit各个注解的具体应用情况,我在这里总结一下:1、请求方式常用 @POST @GET 注解,2、@Query 常用在地址后问号拼接的形式,例如http://192.168.1.10:8080/xxx/customer/createXXX?note=hahha@POST("xxx/customer/createXXX")f...
2020-04-29 14:08:49
180
原创 Flutter 库冲突问题解决
flutter由于升级带来库不兼容的问题:The current Dart SDK version is 2.5.0.Because flutter_deer depends on rxdart >=0.23.0-dev.1 which requires SDK version >=2.6.0 <3.0.0, version solving failed.Running...
2020-04-20 17:33:34
5336
原创 Git相关操作
1、新建项目添加到远程echo "# aaa" >> README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin https://github.com/xuningForAndroid/aaa.gitgit push -u origin master2、将本地仓库...
2020-01-08 14:02:25
74
原创 App启动优化解决方案
因为最近空闲时间比较多,所以 有时间研究一下App的优化,首先看的是启动速度优化,查找了好多资料,无非是将启动过程由原来的单线程转变为多线程执行,比如,在你的App中的Application的oncreate方法,通常,第三方SDK的初始化会集中在这里进行。这里呢,由于进行大量的SDK初始化的工作,所以会比较耗时,所以解决App启动太慢,就要从这里入手。比如,在App中会有网络请求的初始化、加...
2019-12-18 16:26:33
183
原创 Flutter 更新与升级
flutter SDK的升级命令是:flutter upgrade但是由于flutter在国内下载资源可能不太稳定,所以我们之前在flutter SDK路径下的 packages/flutter_tools/flutter_gradle 文件中加入了阿里云的镜像,添加后的文件:本来这几个镜像是为我们开发时下载资源做帮助的,但是flutter升级的时候,会因为添加这几行而报错...
2019-11-27 11:44:59
2721
原创 Android 微信支付的坑
最近在做公司微信支付的需求,着实遇到了个大坑,在这里做一个简单的记录:1、应用集成微信支付: 这部分不是我要说的重点,严格的按照官方集成文档来集成,https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5,不过在这里也需要注意几点,(1)签名要与开放平台上填写的一致,(签名的生成方法需要下载官方给的apk,输入包名...
2019-11-19 13:55:13
345
原创 Glide源码解析
Glide源码解析:1、glide实现ComponentCallbacks2接口,这个接口是Android FrameWork层的接口,该接口一个很重要的作用就是借助Android系统的内存回收机制来进行内存处理。Glide清理内存的机制其实就是通过ComponentCallback2来实现的。也就是glide本身并没有判断何时内存不足或者何时去清理内存需要去清理图片,关于Componen...
2019-09-25 15:19:47
175
原创 Android 项目的架构模式
架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导内容涉及与演化的原理。架构模式,更多的是代表一种思想、往往一种架构模式会有多种不同的实现方式,方式之间本质上没有对错之分,只有合适与否。分析一种架构主要从以下几点来看:(1)架构解决了怎样的问题,当前架构需要解决什么问题才被创建并利用。也就是架构存在的意义。(2)架构模式是怎么样划分角色的,架构中...
2019-09-23 17:16:51
575
原创 java 面向对象的六大原则
java面向对象的六大原则:1、单一职责原则:单一职责简单来说就是一个类只做一件事,但是需要根据实际情况来做具体的分析。2、里氏替换原则:里氏替换原则依赖于继承、多态这两大特性。里氏替换原则简单来说就是所有引用基类、接口得地方必须能透明的使用其子类的对象,通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道使用的到底是子类...
2019-09-20 14:28:07
214
转载 Java内存模型(一)
Java内存模型描述了Java程序中各种变量(共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取这些变量的底层细节。主存:所有共享变量都保存在主存中。 工作内存:每个线程都有自己独立的工作内存,里面保存该线程使用到的变量的副本。两条规定:线程对共享变量的所有操作都必须在自己的工作内存中进行,不能直接从主存中读写。 不同线程的工作内存之间无法直接相互访问,线程之间的变量...
2019-05-17 09:55:32
68
转载 JVM内存模型(二)
3. 本地方法栈3.1. 什么是本地方法栈?本地方法栈和Java虚拟机栈实现的功能类似,只不过本地方法区是本地方法运行的内存模型。本地方法被执行的时候,在本地方法栈也会创建一个栈帧,用于存放该本地方法的局部变量表、操作数栈、动态链接、出口信息。方法执行完毕后相应的栈帧也会出栈并释放内存空间。也会抛出StackOverFlowError和OutOfMemoryE...
2019-05-15 17:50:46
73
转载 JVM 内存模型 (一)
JVM内存模型:java虚拟机的内存空间分为五个部分,分别是:1.程序计数器2.java虚拟机栈3.本地方法栈4.堆5.方法区一、程序计数器: 是一块较小的内存空间,可以把它看成当前线程正在执行的字节码的行号指示器,也就是说,程序计数器里边记录了当前线程正在执行的那一条字节码指令的地址。 如果当前线程执行的是一个本地方法,那么程序计数器为空。 程序计数...
2019-05-15 17:46:03
69
原创 Java 锁机制
类锁与对象锁互不影响 * 不同对象的锁也互不影响 * 对象锁可以有多个 * 内置锁是一种特殊的对象锁,类对象创建的时候,就分配给一个内置锁内置锁的可重入性: * 线程进入doSomething()方法时,此时拿到了LoggingWidget实例对象的锁,随后又调用了父类的doSomething(),它又是被synchronized修饰的 * 现在我们的LoggingWidget...
2019-05-15 14:56:08
88
原创 Get和Post的区别
get与post的区别:1、get方式的请求报文中,不包含请求体,请求参数放在URL后拼接, 相对来说不安全,因为是在URL中拼接参数,所以参数都是可见的, 一般服务器会因为URL消耗资源对URL的长度进行限制,所以get会受到长度限制的影响,进而影响参数的传递。2、post方式的请求报文中,包含请求体,请求参数放在请求体中, ...
2019-05-13 17:14:03
77
转载 网络七层协议
网络的七层协议,也叫OSI模型,OSI模型是从底往上发展而来的。分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层物理层:主要定义物理设备标准,网线的接口类型、光纤的接口类型、各种传输介质的传输速率,主要作用是传输比特流(由1和0转化为电流强弱来进行传输,数模转换),这一层的数据叫比特。数据链路层:定义了如何让格式化数据进行传输,以及控制对物理介质的访问,这一层通常还提...
2019-05-13 17:00:31
445
转载 HTTP与HTTPS的区别
HTTP是超文本传输协议,被用于在web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截获了传输报文,就可以读取内容,所以不建议传输一些敏感信息。为了解决这一缺陷,需要使用另一种协议,安全套接字超文本传输协议(HTTPS),为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL 协议,SSL依靠证书来检验服务器的身份,并且还为客户端与...
2019-05-13 15:44:22
1554
原创 HTTP的请求头内容
每个HTTP请求都会携带相应的头部信息,头信息主要包含以下内容:Accept:客户端能够处理的内容类型Accept-Charset:客户端能够处理的字符集Accept-Encoding:浏览器能够处理的编码格式Accept-Language:客户端当前的语言设置Connection:当前连接的类型(一般会Keep-Alive)Cache-Control:缓存处理Cook...
2019-05-13 14:53:38
605
转载 TCP的握手和挥手
TCP在建立连接和关闭连接的时候分别需要三次握手和四次挥手的操作,这是为什么?SYN、ACK、FIN存放在TCP的标志位,分别表示:SYN:代表请求创建连接,所以在三次握手中SYN=1ACK:代表确认接受,ACK=1表示信息收到了,并在建立连接后发送数据时,都需要加上ACK=1,来表示数据接收成功。FIN:表示请求关闭连接,在分手时发送了两遍,是因为TCP的连接是双向的,一...
2019-05-13 14:40:18
235
转载 Http请求过程
一次完整的Http请求的过程:1、对网址进行DNS域名解析,得到对应的IP地址2、根据这个IP地址找到对应的主机,发起TCP三次握手3、建立TCP连接后发起Http请求4、服务器响应Http请求,并返回响应结果给客户端5、客户端解析响应结果,(浏览器一半为HTML文件,移动设备一般是json数据)6、客户端进行渲染(1)DNS域名解析采用的是递归查询的方式,过程是,先去...
2019-05-13 14:00:08
96
原创 git,删除本地与远程关联
android,直接复制的本地git项目,会将原项目关联的git远程地址也关联,这时候,我们就需要删除关联点击图中减号
2019-03-14 10:41:37
2665
原创 初识Flutter---(一)
最近在学习flutter,flutter是谷歌的移动UI框架,可以快速在Android和iOS上构建高质量的原生用户界面,Flutter可以和现有代码一起工作。在全世界,flutter正在被越来越多的开发者和组织使用,并且flutter是完全开源的、免费的。特点:快速开发、富有表现力和灵活的UI、具有原生性能以上是我在flutter 中文网站上摘录的的,身处在这个知识爆发的时代,我也秉着一...
2019-03-08 16:42:58
188
原创 Android 自定义控件-----进度展示view
最近在项目中遇到动态展示进度的需求,于是手动撸了一个,不太完善,希望对有相似需求的人有帮助。以下是部分代码:import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import andro...
2018-06-20 13:58:29
388
原创 android知识点之-----.9图片的制作
Android .9图片的制作最近项目不忙,闲暇时间很多,于是开始对于我的Android知识点的回头看,对于之前的没有涉及的东西进行一个新的学习与查漏补缺,今天主要学习的是Android.9图片的制作。在Android开发中,制作.9图片一直是很重要的一项技能,你可能会说不需要,因为我们项目组的ui都已经为我弄好了,但是因为实际开发工作中,有很多时候ui并不会为你做这些东西,但是我们还需要
2017-12-14 15:00:53
156
原创 Android实现可折叠的listview
最近在项目中遇到了一个问题,要求实现一个可点击扩展的列表,在网上找了很多代码资源,但是始终没有达到想要的效果,也许有人会说,已经有了一个现成的ExpendableList供我们使用了,但是细心的朋友也许会发现,通过这个view实现的扩展与隐藏,点击区域是有限的,也就是说,我们只能通过点击头部来显示隐藏底部,但是当底部显示的时候,我们对于占大片区域的底部的点击是没有任何效果的。你总不能找产品去说,我
2017-11-02 13:52:55
1533
原创 Android自定义view之------view的位置参数
view的位置参数 view的位置主要由它的四个顶点来决定,分别对应于view的四个属性,left、top、right、bottom。其中top是左上角的纵坐标,left是左上角的横坐标,right是右下角的横坐标,bottom是右下角的纵坐标。需要注意的是,这些属性值并不是相对于屏幕来说,而是相对于view的父控件,也就是它的父布局。因此这些坐标点是相对坐标,在Android中,向右
2017-08-03 21:55:55
352
原创 kotlin常用操作符
最近因为谷歌在IO大会上宣布Kotlin为Android第一开发语言之后,Kotlin着实火了一把,甚至有人预言,Kotlin将在不久之后完全取代Java对于Android的作用,我闲着无事,整合了一下kotlin的常用操作符,对于初学者来说会有很大帮助。 1.安全转换操作符:as 例: CompanyBean mCompany = intent.getS
2017-06-15 15:42:51
315
空空如也
Android6.0获取wifi列表闪退
2017-04-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人