自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 【Android自定义控件】之仿网易星球浮动小球

仿网易星球浮动小球读呗开发过程中遇到新需求,类似于网易星球收集黑钻的界面,考虑到可能也有人会使用,索性封装成库,后面好移植使用先看看需要实现的效果: 需求分析:数据集合可能是int、double、float等类型小球位置随机没有数据时只有一个默认小球,位置固定小球上下抖动,点击向上运动消失实现分析:小球随机的位置固定在父view的宽高范围内可以在初始化和点击时判断集合是否为空从而显示

2018-03-14 17:05:53 3909 10

原创 【Gradle学习】—— Gradle的进阶使用

前面学习了 gradle的基础——groovy的基本语法,现在可以深入点,列个知识小点目录:闭包 基础详解 代码块 参数 -> 左边为参数 右边为代码块 可以使用${}引用代码块 返回值 三个重要变量 this:代表闭包定义处的类 owner:代表闭包定义处的类或者对象 delegate:代表任意对象 (默认owner一致) 闭包的委...

2018-12-24 20:37:20 400

原创 【Gradle学习】—— Groovy基础语法以及数据结构

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2018-11-09 16:10:29 488

原创 【解疑答惑】—— SurfaceView播放视频 来回切换出现ANR

项目中有用到SurfaceView 做视频播放,但是一直有一个问题,测试哥们今天又重新提了,貌似上任开发者并没有解决,看看吧。。。 自己试了试,确实是有这样的bug,但是是报ANR,奇了怪了,全屏放大不至于会报ANR啊,看了看代码,发现全屏播放实际是创建了一个包含surfaceView新的activity,也就是又创建一个SurfaceView,搞不懂为什么这么设计,orz….首先,看一...

2018-07-18 18:15:27 2900 1

原创 【解疑答惑】—— Android调用系统相机,onActivityresult()回调接收到data为空

昨天调用系统相机拍照制作头像的时候遇到个问题,相机拍完照后返回后直接闪退,那么问题出在哪呢?先看看当时的代码:Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,getImageUri());cam...

2018-07-10 18:00:12 1775

原创 【解疑答惑】—— Android事件传递机制之案例分析

Touch事件的传递Android中的每个ViewGroup的子类都有三个与TouchEvent处理相关的方法(其实也并不是所有的View的子类,好多教程上说是所有的View的子类,只有可以向里面添加View的控件才需要分发,比如TextView,本身就是一个最小的View,就不可能向它的子视图分发了,它也没有子试图,所以它没有dispatch,intercept,只有touchE...

2018-06-12 14:48:41 348

原创 【每周一题】—— 线程池

Android中的线程池有哪些? 他们的区别是什么? 为什么要使用线程池?为什么要使用线程池集中管理线程的创建和销毁,提高性能线程池可以有效控制线程池的最大并发数,避免大量的线程之间因为互相抢占资源而导致线程阻塞对线程进行简单管理,如定时执行或者间隔循环执行线程的分类CachedThreadPool数量不定且只有非核心线程任意大的最大线程数...

2018-05-29 16:56:52 204

原创 【小程序探索之路】—— 2、 小程序逻辑层

生命周期小程序的生命周期: onLaunch —> onShow —> onHide页面的生命周期 onLoad —> onShow —> onReady —> onHide —> onUnload页面路由路由方式: 事件事件处理分三个阶段事件捕获阶段事件处理阶段事件冒泡阶段事件分两种冒泡事件:当一个组件的事...

2018-05-21 17:51:19 256

原创 【每周一题】—— 四大组件

Android四大组件中每个组件的作用是什么?它们都可以开启多进程吗?Activity:

2018-05-21 14:20:24 192

原创 【小程序探索之路】——1、开发框架组成

小程序的框架组成小程序的框架组成由四部分组成:WXMLWXSSJavaScriptWXSWXML官方给出的解释是:“WXML 全称是 WeiXin Markup Language,是小程序框架设计的一套标签语言,结合小程序的基础组件、事件系统,可以构建出页面的结构。”也就是HTML。区别与HTML的两点WXML中的标签是严格闭合的WXML中的属性是区分大小...

2018-05-21 14:15:55 564

原创 【解疑答惑】—— ImageView的src和backgroud的区别

src和background的区别 在imageVIew的XML属性中有两个属性src和backgroundsrc存放的是图片资源,background是背景但是两者还是有一些区别的首先两者在代码中设置图片的方法不同//backgroundmImageView.setBackground();mImageView.setBackgroundResource();mImageView.s

2018-05-05 14:51:42 380

原创 JVM和Android的内存机制

JVM内存管理垃圾回收类加载虚拟机性能监控和优化内存管理正常认为的内存区域包括:堆、栈,这种分法比较粗糙JVM较为详细地将内存划分为若干个不同的数据区程序计数器:当前线程所执行的字节码的行号指示器,就是记录正在执行的虚拟机字节码指令的行数java虚拟机栈:我们所谓的“栈”,描述的是java方法执行的内存模型,一个方法对应一个栈帧,存储局部变量表等,一个方法的生命周期对应一个栈帧的进栈

2018-05-05 14:49:39 974

原创 【每周一题】—— Android中ClassLoader

关于ClassLoader涉及到问题: Android中有哪几种ClassLoader?它们的作用和区别是什么? 简述ClassLoader的双亲委托模型 简述双亲委托模型在热修复领域的应用 Android中的ClassLoader 1. BootClassLoader 2. URLClassLoader 3. BaseDexClassLo...

2018-05-05 14:31:05 203

原创 Android进程保活

对于程序被杀死,一般我们能做到两个方面优化:保证进程的优先级当进程被杀死之后的唤醒保证进程的优先级进程的优先级进程根据优先级区分可以分为前台进程可见进程服务进程后台进程空进程进程中有个较为具体的值oom_adj,其数值越小对应的优先级越高红色部分是易于被回收的(4-16),绿色部分是不易被回收的(0-4),白色部分则是不会被回收的( -0)。进程被回收的场景:app按home键处

2018-05-04 14:18:56 157

原创 源码分析之Activity的启动流程

启动流程:调用者进程通过AMS这个Framework端Binder将启动另一个Activity的信息传给SystemServer进程。ActivityStarter处理了这些intent和flag等信息之后,然后交给ActivityStackSupervisior/ActivityStack去处理被调用进程的Activity进栈。如果被调用者进程存在,就会使用ApplicationThread这

2018-04-26 13:43:07 165

原创 【面试系列】—— 网络通信

##网络通信> 网络通信方面,一些基础的协议概念。比如TCP的握手挥手问题,Http和Https的区别以及Https传输过程中用到的加密方式,Http1.0、Http2.0和SPDY之间的区别,Http2.0做了哪些优化等。### 网络的七层模型(从底层往上)1. 物理层:网卡、集线器2. 数据链路层:交换机3. 网络层:路由器4. 传输层5. 会话层6. 表示

2018-04-19 17:25:33 363

原创 OkHttp和Retrofit

介绍OkHttpOkHttp是由Square公司提供的处理网络请求的开源库,有以下特性:支持Http2.0,对一台机器的所有请求共享同一个socket内置连接池,支持连接复用,减少延迟Interceptors(拦截器)轻松处理请求与响应,支持透明的GZIP压缩响应体请求失败时自动重连拥有队列线程池,轻松写并发基于Headers的缓存策略RetrofitRetr...

2018-03-26 11:54:09 1607

原创 Android跨进程之Binder机制概述

Binder(机制)首先Binder是一个类,实现了IBinder接口,其次从IPC角度来看,就是Android中跨进程通信机制。为什么使用Binder作为跨进程机制?Linux中使用管道(pipe)做为进程之间的通信方式,虽然Android内核也是使用的Linux,但是作为移动端,性能和内存角度考虑,使用Binder是最好的方式。管道和Socket数据拷贝的次数为2次,文件共享0次,但是其安全性低

2018-03-20 19:44:08 285

原创 阿里Android开发手册--结合自身需要注意的几点

阿里Android开发手册–结合自身需要注意的几点Android资源文件命名和使用在Android开发过程,有时候头痛的不是需求实现不了,往往就是命名,阿里给出的这要命名规则,大大地减少了我们开发过程不必要的浪费时间所有资源文件带上模块前缀,都小写layout的命名规则(模块名_样式名称)Activity 的 layout 以 module_activity 开头Fragment 的 layo

2018-03-06 18:18:38 218

原创 View的post()源码分析

##View的post()和postDelayed()方法详解###子线程中不能对UI进行操作,这我们都知道,但是可以通过view.post(Runnable)的方式进行UI操作,这是为什么呢?我们通过分析源码的方式来了解一下    public boolean post(Runnable action) {        final AttachInfo attachInfo = mAttach...

2018-02-27 18:01:19 436 1

原创 【解疑答惑】—— android:maxLines="1"没满一行显示省略号,用android:singleLine="true"解决

带标签的文本 android:maxLines=”1”, 还没满一行就会会显示省略号 android:singleLine=”true”, 正常显示 问题原因:Google Document 的解释:android:maxLines Makes the TextView be at most this many lines tall. android:singleLine Constrains

2017-12-27 17:25:34 2700

转载 Android 性能优化--快、稳、省、小

比较Android与iOS的硬件设备,android的硬件配置往往都强于iOS,出现性能差异最主要的原因还是在软件上,android系统的碎片化和兼容性就是罪魁祸首各大厂商对Android原生系统进行定制,导致开发者的适配工作越来越难,作为开发者我们能做的是什么呢,下面就是作为开发者我们可以提升性能,优化体验的几点:快 – 使用时避免出现卡顿,响应速度快,减少用户等待的时间,满足用户期望。稳 –

2017-12-13 19:47:17 2435

原创 【解疑答惑】—— PullToRefresh 下拉刷新的时候再滑动,报IndexOutOfBoundsException

问题描述:PullToRefresh 上拉刷新的时候向下滑动,这时候可能会报IndexOutOfBoundsException;

2017-11-22 20:02:22 394

原创 抽稀-道格拉斯算法

原理 :曲线的首尾两点连接一条直线,求其余各点到该直线距离,比较其中最长距离值dMax与阈值D,如果最长距离值DMAX<阈值D,则取消两点之间的所有点,如果最长距离值DMAX>阈值D,则保留该点,以这个点连接首尾点,重复上面操作。应用:绘制运动轨迹

2017-11-01 10:44:07 1229

原创 浅谈JVM--《深入理解Java虚拟机》小小总结

《深入理解Java虚拟机》总结内存管理垃圾回收类加载虚拟机性能监控和优化

2017-10-30 10:24:53 674

原创 【解疑答惑】—— invalidate、postInvalidate的区别

共同点两者都是刷新界面的方法原理:将UI线程中之前旧的view删掉,重新创建一个view区别invalidate()只能在UI线程中调用,也符合主线程更新UI的原则postInvalidate()可以直接在子线程中刷新UI,源码如下: /** *This method can be invoked from outside of the UI thread * onl

2017-10-30 10:02:19 410

原创 【解疑答惑】—— AsyncTask的cancel方法失效的原因

问题描述:当我们退出Activity的时候,AsyncTask可能还在执行 我们想在activity退出,关闭AsyncTask,想到了它的cancel()方法参数为true的时候,AsyncTask中的线程正在运行也要被关闭;false等到线程执行完再取消但是事实证明,调用这个cancel方法并没有关闭Asynctask那么问题就来了,既然叫cancel为什么不能取消Asynctask呢

2017-10-30 09:57:59 1159

原创 FBReaderJ的详细集成步骤(Andorid)

附上其github地址:https://github.com/geometer/FBReaderJ再附上AS版本地址:https://github.com/adolfAn/FBReader_ASFBReaderJ是一款强大稳定的第三方阅读器,虽然强大,但是集成起来并不简单,话不多说,直接开始集成。下载AS版本的FBReader,直接在你的项目中将FBReader_AS-master导入moudle

2017-06-30 16:23:27 3469

listview优化方法

第一种优化就是重用convertView,这也是最简单的一种优化方式,就是在Adapter类的getView方法中通过判断convertView是否为null,是的话就需要在创建一个视图出来,然后给视图设置数据,最后将这个视图返回给底层,呈现给用户;如果不为null的话,其他新的view可以通过复用的方式使用已经消失的条目view,重新设置上数据然后展现出来。

2018-04-18

空空如也

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

TA关注的人

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