
Android
文章平均质量分 77
gitzzp
这个作者很懒,什么都没留下…
展开
-
几种排序算法分析
这里写目录标题1.1 排序的定义1.2术语说明算法总结1.3 算法分类1.4 比较和非比较的区别1.5.1、冒泡排序(Bubble Sort)1.5.2 算法描述1.5.4 代码实现1.6.1 算法分析1.6.4 动图演示3、插入排序(Insertion Sort)3.1 算法描述3.2 动图演示3.2 代码实现3.4 算法分析4、希尔排序(Shell Sort)4.1 算法描述4.2 过程演示4.3 代码实现4.4 算法分析5、归并排序(Merge Sort)5.1 算法描述5.2 动图演示5.3 代码实原创 2021-12-30 19:09:30 · 304 阅读 · 0 评论 -
简单排序算法
这里写目录标题冒泡排序选择排序插入排序希尔排序快速排序二分法冒泡排序两个for循环,两两进行比较,如果满足规则,则将两个数据进行交换 public int[] maopao() { int[] arrays = {1, 3, 9, 5, 11, 66, 85, 97, 101, 588, 469, 258, 147, 369, 456}; for (int i = arrays.length - 1; i > 0; i--) { f原创 2021-12-30 16:50:35 · 168 阅读 · 0 评论 -
数据结构之ArrayList
ArrayListArrayList详解ArrayList概念ArrayList类Serializable 标记性接口Cloneable 标记性接口RandomAccess 标记性接口AbstractList 抽象类ArrayList源码解析构造函数add(E e)add(int index, E element)addAll(Collection<? extends E> c)addAll(int index, Collection<? extends E> c)E set(int原创 2021-12-29 16:44:33 · 2234 阅读 · 0 评论 -
从synchronized入手看锁
synchronizedsynchronized基础描述三级目录对象实例在JVM中的状态锁的不同状态锁膨胀偏向锁轻量级锁synchronized原理synchronized基础描述修饰在方法上,锁的是当前对象,创建多个对象,则锁失效此时可以用单例、静态方法锁等方法避免三级目录对象实例在JVM中的状态一个java对象在内存中分为对象头、实例数据、对其三个部分对象头:8个字节,垃圾回收数据(分代年龄、GC标志)、锁数据、hashcode值等,一部分存放对象的类元数据,通过该数据确定对象是哪个类的原创 2021-12-24 19:52:10 · 1418 阅读 · 0 评论 -
Android内存相关补充
内存相关补充内存泄露和内存溢出内存泄露内存溢出内存抖动垃圾回收机制栈内存、堆内存、方法区方法区栈内存堆内存新开线程finalGC方式GC回收步骤标记清除法标记整理法内存划分内存泄露和内存溢出内存泄露程序在申请内存后,被某个对象一直持有,无法释放已申请的内存。一次内存泄露危害可以忽略,但堆积起来的后果很严重,无论多少内存,都会被耗光。一般发生在方法区、堆内存、虚拟机栈典型:长生命周期对象持有短生命周期对象的引用,导致短生命周期对象无法销毁。单例持有Activity的引用静态变量持有Activit原创 2021-12-20 20:37:25 · 1178 阅读 · 0 评论 -
JVM虚拟机与Android虚拟机
虚拟机相关虚拟机是什么, JVM,Dalvik,Art三者的区别JVM和Android虚拟机的区别虚拟栈和寄存器class与dex结构Dalvik虚拟机和Art虚拟机的区别虚拟机是什么, JVM,Dalvik,Art三者的区别JVM和Android虚拟机的区别JVM虚拟机执的是.class文件,Android虚拟机执行的是.dex文件class文件存在很多冗余信息,dex会去除冗余信息一个class文件是一个类,一个dex文件里有很多类,减少加载次数和IO操作JVM虚拟机执行的是基于虚拟栈的原创 2021-12-20 15:23:53 · 2148 阅读 · 0 评论 -
OkHttp
OkHttp原创 2021-12-16 09:40:57 · 283 阅读 · 0 评论 -
插件化问题
插件化问题插桩式插件化启动Activity简单流程插桩式静态广播几个问题在插件中,为什么不能使用this为什么需要代理的Activity插桩式插件化启动Activity简单流程同理,Service和动态注册广播也是类似的流程插桩式静态广播几个问题在插件中,为什么不能使用this因为插件APK没有安装,没有context环境,所以不能使用this,所有由this调用的方法,都需要被重写,调用宿主代理Activity中的方法为什么需要代理的Activity为插件提供Context环境、Act原创 2021-12-09 20:58:50 · 106 阅读 · 0 评论 -
SetContentView流程及应用换肤
SetContentView流程及应用换肤SetContentView流程LayoutInflater.inflate流程LayoutInflaterCompat.setFactory方法及换肤动态换肤方案SetContentView流程LayoutInflater.inflate流程LayoutInflaterCompat.setFactory方法及换肤在上边分析setContentView的流程中,我们发现在调用到createViewFromTag的时候,在调用系统方法生成View之前,会先原创 2021-12-06 18:08:05 · 276 阅读 · 0 评论 -
PMS AMS相关
这里写目录标题一级目录二级目录PackageManagerServiceContextWrapper和ContextImpl是怎么关联起来的startService简单流程一级目录二级目录PackageManagerServiceContextWrapper和ContextImpl是怎么关联起来的ContextWrapper中有一个变量mBase,实际就是ContextImpl对象,是何时赋值的?startService简单流程...原创 2021-12-05 17:14:01 · 111 阅读 · 0 评论 -
Handler
Handler碎碎念碎碎念内存泄露子线程为什么不能创建handler为什么Handler不会造成死循环Handler怎么发送异步消息,将runnable对象放入消息队列的Handler中延时消息是如何处理的Handler中消息队列是什么数据结构Handler中new Message和Message.obtain有什么区别Handler如何切换线程ThreadLocal碎碎念内存泄露一、发生在延时消息、子线程阻塞后发过来的消息、以及网络请求结果回来后的消息,此时如果activity退出了,就会出现内存泄原创 2021-12-02 12:03:12 · 989 阅读 · 0 评论 -
使用Android Studio开发gradle插件(一)
使用Android Studio开发gradle插件创建插件打包到本地maven使用创建插件在Android studio中不能直接创建gradle plugin,所以我们创建一个library,并对其进行修改。gradle插件是基于groovy来进行开发的,所以我们需要将我们的module改造成一个groovy项目。创建完成之后,删除module里边的文件,只保留src/main和build.gradle文件。然后在main文件夹下添加groovy目录和resources目录,groovy目录原创 2020-12-07 18:00:57 · 951 阅读 · 1 评论 -
Android面试题(2020)
文章目录Java基础Android部分Http基础知识算法kotlin、flutter相关其他问题Java基础String是什么数据类型?(Java中数据类型)Java中数据类型分为两种:基本数据类型和引用数据类型。根据下图可以看出String为引用类型。String、StringBuilder、StringBuffer的区别(1)String是字符串常量,一旦创建后就不可改变,String的拼接会创建新的字符串常量对象并回收之前的对象,频繁的String拼接对内存消耗较大,并且耗时。原创 2020-08-17 18:23:15 · 4154 阅读 · 0 评论 -
RemoteView基础知识(一)
RemoteView字面意思可以翻译为远程view,该view运行于其他进程中,主要是系统进程,多用于通知栏和桌面widget中,当view运行在其他进程的时候 我们无法像在Activity中那样直接更新view,为了能够跨进程更新view,RomoteView提供了一系列的set方法RemoteView在通知栏中的应用简单举例使用系统默认样式弹出一个通知栏Notification notific原创 2016-07-02 16:38:24 · 1171 阅读 · 0 评论 -
Android drawPath 实现QQ拖拽泡泡
本文转自:http://android.jobbole.com/84457/这两天学习了使用Path绘制贝塞尔曲线相关,然后自己动手做了一个类似QQ未读消息可拖拽的小气泡,效果图如下:最终效果图接下来一步一步的实现整个过程。基本原理其实就是使用Path绘制三点的二次方贝塞尔曲线来完成那个妖娆的曲线的。然后根据触摸点不断绘制对应的圆形,根据距离的改变改变原始固定圆形的半径大小。最后就是松手后返回或转载 2016-10-13 12:12:02 · 384 阅读 · 0 评论 -
view的工作原理
view的工作原理基本概念ViewRoot 对应ViewRootImpl类 是连接WindowManager和DecorView的纽带,view的三大流程均通过ViewRoot来完成,在ActivityThread中,当Activity对象呗创建完毕后,会将DectorView添加到window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DectorVie原创 2016-06-22 12:17:25 · 4693 阅读 · 2 评论 -
Android Studio上传项目到jcenter
现在我们使用Android Studio进行开发,当需要使用到第三方库的时候,通常情况下我们会在gradle文件中的依赖里边添加一句话 “compile xxx.xxx.xxx:xxx:1.0.0”,就可以非常方便的将别人的库引入到自己的项目中,今天我们就来和大家一起将自己写的代码上传到jcenter中,供别人调用。首先,我们需要到bintray中注册一个账号。 注册好之后,我们到用户中心去获取A原创 2017-01-22 18:46:09 · 622 阅读 · 0 评论 -
AnimatedVectorDrawable的一些碎碎念
关于Vector及AnimatedVectorDrawable的一些基本知识,请参见徐医生的Android Vector曲折的兼容之路 ,写的很全,很棒。读完上文之后,我们对静态的vector和动态的AnimatedVectorDrawable有了一定的了解,并做了一些小的尝试,本文里边主要说的是一些兼容性的问题及解决方案。从AppCompat23.2开始,Google开始支持在低版本上使用Vect原创 2017-02-21 17:10:47 · 2945 阅读 · 1 评论 -
【Android】Google Multidex使用方法
对于Android进行dex分包的原因以及策略,这里就不再进行详细的叙述,具体的可以参考这篇文章,是我转载自美团技术分享的文章: http://blog.youkuaiyun.com/gitzzp/article/details/51691097 文章中,美团的大神已经将几种不同策略的优缺点说的非常的详尽,然后对于普通的小公司而言,并没有太多的人员精力来投入到其中,综合来说,使用google的MultiDe原创 2016-06-16 17:10:09 · 2336 阅读 · 0 评论 -
Android开发:最全面、最易懂的Webview使用详解
文章转自:http://www.jianshu.com/p/3c94ae673e2a1. 简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。2. 作用显示和渲染Web页面直接使用html文件(网络上或本地assets中)作布局可和JavaScript交互调用We转载 2017-12-04 18:06:46 · 367 阅读 · 0 评论 -
【Android】各种小知识点,不间断更新
提高应用启动速度splash页面瞬间响应App启动时闪屏页的白屏或者黑屏现象(取决于你所选取的Theme),无论怎么优化Application和启动页的onCreate都无法消除,毕竟解析界面是需要一定时间的,此时可以通过自定义启动页面的windowBackground来解决这个问题。代码如下:name="AppSplash" parent="android:Theme">原创 2016-06-15 19:37:20 · 1424 阅读 · 0 评论 -
git 基本命令
Git 全局设置git config --global user.name “xxx”git config --global user.email “xxx”创建新版本库git clone xxx.gitcd VM5.0touch README.mdgit add README.mdgit commit -m “add README”git push -u origin mast...原创 2019-08-13 18:10:44 · 129 阅读 · 0 评论 -
分享一个基于MVP+Retrofit+RxJava+MaterialDesign的App
本文转自:http://android.jobbole.com/83770/2016已经荒废了一半,还有一半可以继续浪费。源码我已经上传到github上了,欢迎fork和starhttps://github.com/PleaseCallMeCoder/PrettyGirls我想说的最近一直在忙项目的事,所以很久不写博客了。抽时间整理了下最近的收藏的一些文章,感觉新的知识点还是挺多的,于是乎转载 2016-10-13 12:16:32 · 389 阅读 · 0 评论 -
Android 自定义View 跳动的水果和文字
本文转自:http://android.jobbole.com/84466/开头这是自定义View和动画的第二篇,第一篇是Android drawPath 实现QQ拖拽泡泡,主要介绍了drawPath 绘制二次贝塞尔曲线的过程。(idea来自同事的新需求!)话不多说,还是先上效果图吧!(今天手贱升级了Genymotion,就成这个傻逼样子了!)效果图全局配置根据效果图,再来说说实现的基本过程。转载 2016-10-13 12:08:34 · 446 阅读 · 0 评论 -
Window和WindowManager(一)
window,我们都知道所有的视图其实都是通过window来呈现的,不管是activity还是dialog等,window是所有view的实际管理者。我们在学习View的事件分发机制的时候也会提到window,view的所有事件都是通过window传递给DecerVIew,然后DecerView再传递给我们的View等等等等。但是我们在实际开发的过程中对window的接触确实不是很多,只有当需要做一原创 2016-08-21 00:23:55 · 485 阅读 · 0 评论 -
B站的DanmakuFlameMaster的使用
本文转自:http://blog.youkuaiyun.com/liuyifirsttime/article/details/504919081、弹幕内容解析DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_BILI) //xml解析DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_ACFUN)转载 2016-08-05 15:31:44 · 2234 阅读 · 0 评论 -
可能是讲解Android事件分发最好的文章
可能是讲解Android事件分发最好的文章 本文转自:http://www.jianshu.com/p/2be492c1df96 我几乎看过国内讲解Android事件分发的所有文章,但遗憾的是都没有这篇讲的好,原因有二:它阐明了具体的事件分发机制的设计意图,让人既知其然,又知其所以然;它没有贴源码,吓唬本宝宝。所以我转载 2016-07-04 11:31:17 · 471 阅读 · 2 评论 -
Android动画之属性动画
属性动画和View动画不同,属性动画可以作用于任何对象,属性动画中有VlaueAnimator、ObjectAnimator、AnimatorSet等。属性动画可以在一个时间间隔内完成对象从一个属性值到另一个属性值的改变,例如:改变一个view的宽高改变一个view的背景色,实现某一个时间段内的渐变效果。ValueAnimator animator = ObjectAnimator.ofInt(原创 2016-07-17 23:57:33 · 468 阅读 · 0 评论 -
Android快速实现文件下载(只有4行代码)
本文转自:(http://www.jianshu.com/p/46fd1c253701)写在前面的废话下载文件,几乎是所有APP都会用到的功能!算了,还是不废话了,直接开写吧。。。简单使用完成一个下载任务只需要4行代码,什么断点续传,大文件下载,通知栏进度显示….都不需要你操心。//创建下载任务,downloadUrl就是下载链接DownloadManager.Request reques转载 2016-07-04 11:36:42 · 442 阅读 · 0 评论 -
美团Android DEX自动拆包及动态加载简介
概述作为一个android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能、添加新的类库,代码在急剧的膨胀,相应的apk包的大小也急剧增加, 那么终有一天,你会不幸遇到这个错误:生成的apk在android 2.3或之前的机器上无法安装,提示INSTALL_FAILED_DEXOPT方法数量过多,编译时出错,提示: Conversion to Dalvik format fai转载 2016-06-16 12:55:14 · 1906 阅读 · 0 评论 -
了解使用Android ConstraintLayout (Google I/O 2016)
说明Google I/O 2016 上发布了 ConstraintLayout, 简直是要变革 Android 写界面方式. 于是第二天我立即找到相关文档尝试, 这是官方提供的 Codelab 项目. 手把手教你探索 ConstraintLayout. 英文原文: https://codelabs.developers.google.com/codelabs/constraint-layout/in转载 2016-06-20 17:37:34 · 1297 阅读 · 0 评论 -
谷歌约束控件(ConstraintLayout)扁平化布局入门
本文转自:http://blog.youkuaiyun.com/qiujuer/article/details/51462471 序在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束的库。简单来说,她是相对布局的升级版本,但是区别与相对布局更加强调约束。何为约束,即控件之间的关系。 她能让你的布局更加扁平化,一般来说一个界面一层就够了转载 2016-06-20 17:42:08 · 1220 阅读 · 1 评论 -
Android Studio 2.2新特性(Google 2016 I/O)
1.升级SDK时可以后台,你可以一边写代码一边更新SDK,而不必一直等待2.修改代码之后启动速度更快(Instant Run)3.APK analyzer打开方式:用来分析你的APK的组成,每部分的占比下载包的大小,实际解压后的大小分析dex文件,显示每部分的方法数,多少定义,多少引用反编译获取资源文件的id、名称,方法名称等支持不同APK之间的对比操作4.新的AndroidManif原创 2016-06-21 15:42:52 · 3963 阅读 · 0 评论 -
Window和WindowManager(二)
接着上一节,View是Android中的视图的具体呈现方式,但是View必须依附在Window上,不能单独存在,因此有View的地方就有Window,Android中可以提供视图的地方有这么几种,Activity、dialog、Toast、PopupWindow、menu等,我们来分析一下这些地方的window的具体创建过程。Activity中Window的创建过程 Activity启动的时候原创 2016-08-29 00:20:41 · 374 阅读 · 0 评论 -
Window和WindowManager(三)
继续,我们来分析Toast的Window创建过程Toast的Window创建过程 由于Toast是系统Window,所以Toast的window创建过程相对于activity和dialog这样的应用window和子Window来说比较复杂,涉及到一些IPC的操作,这里只分析原理,不会贴系统源码。首先,Toast的本质也是由window来实现的,但同时Toast也具有定时取消的功能,在系统中是有h原创 2016-08-30 00:01:50 · 374 阅读 · 0 评论 -
Andorid 自定义圆形渐变色进度条的从实现到开源
本文转自:http://android.jobbole.com/84025/写在前面的话3月初我在自定义控件概述中挖下的几个坑,前一段时间已经基本填完了,自定义控件的几种实现方式也分别写了demo来进行说明。今天我们来聊一聊如何把自己封装一个圆形渐变色进度条控件开源到github,并且上传到jcenter方便别人远程依赖。先看下效果图:连接github并提交新项目前提条件:安装Git客户端(下载地转载 2016-10-13 12:05:34 · 1160 阅读 · 0 评论 -
view基础知识介绍(二)
view基础知识介绍View的滑动View的滑动可以通过三种方式来实现:通过view本身提供的scrollTo和scrollBy方法通过动画施加平移效果来实现通过改变view的LayoutParams使得view重新布局来实现scrollTo/scrollBy ①. 通过查看view的源码 我们可以发现 scrollBy方法其实也是调用了scrollTo方法来实现的scrollTo方法是基于原创 2016-06-21 17:23:52 · 3836 阅读 · 0 评论 -
Android中的线程池简介
Android中的线程池的概念来源于Java中的Executor,Executor是一个接口,其真正的实现类是ThreadPoolExecutor。ThreadPoolExecutor提供了一系列的参数来配置线程池,通过不同的参数来创建不同的线程池。在了解具体的线程池之前,我们先大概了解一下ThreadPoolExecutor的概念。ThreadPoolExecutor ThreadPoolEx原创 2016-09-08 01:14:27 · 491 阅读 · 0 评论 -
使用CoordinatorLayout打造一个炫酷的详情页
本文转自:http://www.jianshu.com/p/5287d090e777 开发中如果能恰当的使用material design的一些设计,不仅能让你的APP更炫酷,最重要的是开发起来easy多了。这里介绍下material design里一个很重要的控件:CoordinatorLayout,以及配合其子view的一些用法。我们在创建Activity的时候,有一个Ac转载 2016-09-18 11:37:31 · 3042 阅读 · 0 评论 -
Android消息机制解析——Handler
日常开发的过程中,我们经常会使用到hander,handler是Android中消息机制的上层接口,使用过程很简单方便,通过handler我们可以轻松的将一个任务切换到另外一个线程中去执行,通常我们会在子线程中使用handler,将UI操作切换到主线程去执行。handler概述Handler的运行,还需要MessageQueue和Looper,还有ThreadLoacl。MessageQueue用原创 2016-09-05 00:17:31 · 479 阅读 · 0 评论