android
文章平均质量分 81
小草的胖冬瓜
一心想做大牛,默默无闻小兵
展开
-
Android开发调试技巧
Android开发过程中会遇到不少需要调试的地方,常用的调试也很简单,这里总结一些不是很常规的调试技巧(持续更新)1、写本地日志利用BufferWriter类来实现,不多说废话,直接上代码,这个后面方便传代码到git的时候,放到git上吧,毕竟直接放博客排版太长了public class LogsUtil { public static LogsUtil logsUtil = new...原创 2019-08-21 13:55:43 · 452 阅读 · 0 评论 -
android 多渠道打包的应用
我们知道现在Android开发现在一般用gradle进行项目管理,所以这里就说说怎么么通过gradle配置来实现多渠道打包的问题。在讲怎么实现多渠道打包之前,先说说为什么要使用多渠道打包。比如我们开发一款app,有两个版本一个是付费版本,一个是免费的版本,这个两个个版本实现的大部分功能都是一样的但是有部分功能不一样,这时该怎么办呢,当然我们可以建两个android项目,一个付费项目,一个免费的项目...原创 2018-03-17 15:14:05 · 1182 阅读 · 0 评论 -
android沉浸式状态理解
在听说沉浸式状态之前,说实在的我连status bar、action bar以及navigation bar这几个bar都没有怎么搞清楚。那么什么叫沉浸式状态呢,所谓沉浸式就是给人一种沉浸其中的感觉,表现在android上就是全屏啦,于是我们就先用全屏来简单粗暴的理解沉浸式吧。但是只是全屏肯定不够啊,全屏了我还得交互啊(这里的交互表现在操作界面按钮等上面),但是普通的全屏不能满足这个需求(这个后面...原创 2018-02-22 11:48:54 · 793 阅读 · 0 评论 -
最新android sdk版本号和sdk的对应关系
最近公司做android开发真的很苦逼各种网络连不上,我自己记性不好又记不清楚android 版本号和API之间的对应关系,但是日常工作中又经常需要,没办法自己写篇博客记录下吧,方便之后查询。1、版本号和API的对应关系关于android sdk版本号和api的对应关系如下所示: Version API CodeName 2.3.3 - 2.3.7 10原创 2018-01-04 17:49:40 · 12435 阅读 · 0 评论 -
Android中的动画实现
android开发中用到的动画实现方式有三种,即View动画、Drawable动画以及属性动画三种动画的实现方式,关于这些动画的实现方式网上很多文章都总结的很详细了,写这篇文章完全是为了自己总结记录,而且本文不会去追究代码细节的问题,就单单总结下怎么用的问题,具体代码细节的话,请参考本文的参考文献。1、View动画View动画的实现是通过View控件的setAnimation来设置动画,可以设置的动原创 2017-12-21 13:37:52 · 1026 阅读 · 0 评论 -
Android项目使用私有maven仓库配置
最近写一个android的aar包,因为存在依赖第三方包的问题,所以得使用maven仓库。但是又不能提交项目到公共maven仓库上去,所以只得自己搭建一个maven仓库,于是上网一查,好家伙,基本都是推荐nexus来搭建私有仓库的。本文的目的是说清楚以下三点内容1、nexus搭建私有仓库2、gradle task命令部署aar到私有仓库3、在gradle项目中添加aar的依赖那么这就来说说吧1、ne原创 2017-12-07 13:37:12 · 2932 阅读 · 1 评论 -
关于Android开发中JNI/NDK使用的一点总结
咳咳,作为一名android爱好者(其实是为了钱钱),之前一直在使用Android Sdk进行开发,同时也一直知道有个ndk的开发方式,知道全名是native development kit,基原生开发工具集,模糊的知道应该是和c/c++开发有关系的,然后就没有深入一点的了解了。目前阶段想系统性的收一下自己的android技能,整理成一个比较系统的知识体系,于是乎ndk就成了一个绕不过去的技术,这篇原创 2017-12-06 11:42:47 · 590 阅读 · 0 评论 -
关于proguard的使用总结
在聊proguard使用之前,先说说proguard到底是什么东东,我主要做android开发,平时一般都听过android混淆打包的说法,直观的感觉就是把写好的java代码,通过一种编码方式给混淆了,让别人不容易看出代码逻辑以及java类之间的关系。其实,殊不知,这种混淆打包所依仗的就是这里要讲的progurad工具。progurad工具实际上有四个功能。压缩(Shrink):检测并移除代码中无用原创 2017-12-05 11:50:18 · 4645 阅读 · 0 评论 -
对于gradle在android studio中使用的一点认识
这个周末的时间可以说都贡献给gradle了,主要是做了什么一个事情呢,也就是查阅各种gradle的资料,到现在还是很多东西没搞清楚,但是也没时间去一一的搞清楚了,再深如一点就要去各个梳理源码了,根据我的这几天的认识,这必将是一个较大的工程,所以暂时打住,这篇文章就来总结下这几天我通过学习对gradle有的一些新的认知。其实平时构建android项目,只需要网上搜搜官网找找,随便配置下便可,但是这篇文原创 2017-12-04 16:17:47 · 568 阅读 · 0 评论 -
关于ContentProvider使用总结
之前看过一篇文章,上面说了解Android的四大组件的小伙伴才算是真正的入门了,仔细想想按照这个标准自己好像都还没有入门,那么便想通过几篇文章来好好研究下四大组件,这里便作为开篇先研究ContentProvider吧,至于为什么先研究ContentProvider,原因是我对它最不熟悉,所以就拿最不熟悉的开刀吧。既然是谈使用,那么就想来从使用流程上来做一个总结吧,注意这里不会详细的贴出所有代码,只会原创 2017-11-22 17:18:51 · 520 阅读 · 0 评论 -
adb命令不完全总结
在日常android开发过程中,了解一些adb命令会让开发效率提升很多。这篇文章就是简单记录下日常开发中,自己觉得很有用的adb命令,所以之后有了解到新的adb技能,也会来持续的更新这篇博客。1、adb shell总所周知,android内核就是基于linux进行开发的,那么在android上可以使用linux上的shell命令也就不奇怪了。通过adb shell可进入shell客户端,从...原创 2018-03-31 14:23:06 · 534 阅读 · 0 评论 -
Intent在Android开发中的使用总结
关于Intent的使用,其实已经有很多文章进行了详细的介绍,包括谷歌开发者网站也有进行很详细的介绍。这里再重复这个轮子的过程,主要是加深自己对Intent的认识,以及方便之后的查阅。1、Intent是什么Intent是一个消息传递对象,可以使用它来完成对其它应用组件的请求操作。从这里可以看出,Intent是一个对象,它的主要功能有两个一个是传递消息,另外一个就是请求应用组件了,而这个传...原创 2018-04-22 11:53:18 · 400 阅读 · 0 评论 -
Acivity启动流程分析
实际上,分析过很多次Activity启动流程,每次分析完成后很快就忘记了,网上也有很多博客写的很优秀,但是对我而言总是少了点什么,于是这篇博客决定在Android 9.0源码基础上梳理一次Activity启动流程,这里提供一个在线查看Android源码的地址AndroidXRef1、启动请求Activity我们通常通过startActivity来启动一个Activity//framework...原创 2019-07-25 19:34:14 · 410 阅读 · 0 评论 -
浅谈AsyncImageLoader和Glide加载本地图片性能对比
距离上一次写博客已经很长时间,主要原因还是因为太懒了,而最近心思又不在技术上所以才长时间没有跟新博客。这篇文章来简单说说Glide和AsyncImageLoader加载本地图片上的表现吧。关于Glide的用法及源码解析可以参考郭霖大神的Glide博客专栏,虽然专栏中是以Glide 3.x版本进行源码解析的,但是对于Glide 4.x源码也就是大同小异了。1、AysncImageLoader说明...原创 2019-05-08 15:13:56 · 1220 阅读 · 0 评论 -
Ubantu18.04环境下编译android源码
最近在看金泰延老师写的《Android 框架揭秘》一书,第一章就是下载并编译android源码,书中内容较为陈旧,所以不得不到网上收罗各种资料,最后总算是大功告成,现在总结如下。1、安装git和repo并配置安装git通过下面命令实现sudo apt-get install git另外还需要配置好git的user.email和user.name,这个自己随便写就行了gi...原创 2018-08-19 10:52:01 · 18807 阅读 · 10 评论 -
APK签名流程介绍
实际上,现在Android开发IDE自带签名功能,但是有时我们还是可能遇到自己签名apk的场景的,比如你有一个未签名的apk,但是你要adb install到device上,这时我们在adb install之前就必须对该apk进行签名处理才能install成功,这篇文章就简单的介绍下apk签名流程吧。1、生成签名证书签名需要签名证书,签名证书类型实际上是有很多的,如jks、keysto...原创 2018-08-03 13:42:33 · 1103 阅读 · 0 评论 -
MAT在内存分析中的简单使用
在Android开发过程中,经常会遇到各种内存泄漏和内存溢出的问题,所谓的内存泄漏是指部分已经不再使用的变量还继续占用内存得不到及时释放,而内存溢出则是指Android虚拟机会给每个应用(对应一个进程)可分配的内存是有限的,当该应用占用的内存达到可分配的最大内存时,应用继续申请内存,这是就会出现内存溢出。内存溢出多是内存泄漏导致的,内存泄漏和内存溢出都会降低应用运行效率,导致应用卡顿,所以在日常开...原创 2018-07-08 13:36:00 · 1065 阅读 · 0 评论 -
Android事件分发拦截以及处理分析
在Android开发中,经常遇到如下场景,在一个ViewGroup中嵌套有其它ViewGroup或者View,这时点击被嵌套的ViewGroup或者View,这时点击事件到底是怎么被处理的呢?下面就以下面的嵌套为例子来说明 从图中可以看出CustomGroupA、CustomGroupB以及CustomView三者之间的嵌套关系,为了说明点击CustomView后,事件最终被处理的情况,我们...原创 2018-06-03 22:24:24 · 724 阅读 · 0 评论 -
从原理上粗略认知Android线程池(ThreadPoolExecutor)
在开发过程中,可能经常遇到下面的开发场景,即一个列表加载网络图片,比如加载100个网络图片,我们是不是就要去新建100个线程来下载对应的图片,这种做法当然是能够实现功能的,但是100个图片就100个线程也太夸张了,可能导致线程之间互相抢占系统资源以及线程创建和销毁会给应用带来额外的性能开销。所以这个时候我们就想到了利用线程池来实现这个功能,在Android开发艺术探索一书中,总结了线程池的以下三个...原创 2018-05-05 11:35:00 · 251 阅读 · 0 评论 -
Android中的Handler工作原理分析
Handler在Android开发中的使用频率很高,但然最常用的就是有一个耗时任务,在该任务结束后,我们要去更新UI界面,这时自然而然的我们就会使用Handler来完成这个功能。首先我们在UI线程中实例化一个Handler对象Handler handler = new Handler(){ @Override public void handleMessage(Mess...原创 2018-04-25 23:39:10 · 342 阅读 · 0 评论 -
Andriod中反射应用部分总结
五一过节写一篇简单一点的东西吧,这里就来简单总结下反射这个东东在android开发中的使用,当然这篇博客现在是不完全总结,知道多少写多少,以后应该还会进一步完善本篇博客。这里先创建一个ReflectUtil类,这个类并不用来处理反射,而是提供一些实验数据package com.yoryky.demo.util;public class ReflectUtil { priva...原创 2018-04-30 22:54:31 · 248 阅读 · 0 评论 -
关于AsyncTask使用及原理的一些说明
AsyncTask这个类用的比较多,平时做项目时,一般用在文件下载这一块多比较多。其使用起来还算方便,实现根本的原理还是Thread + Handler。这篇文章就来谈谈AsyncTask的基本使用以及其原理实现,同时说说其和Handler的关系。1、AsyncTask的基本使用使用AsyncTask都得实现一个AsyncTask的子类,并在其中重载AsyncTask的一些方法(publishPro原创 2017-11-21 18:06:27 · 293 阅读 · 0 评论 -
关于RxJava源码的分析
RxJava最近好像真的比较火,我也算是接触了一段时间了,它的确对于提升代码的简洁性,避免多嵌套这一块有很大的帮助。我对RxJava的宏观理解是观察订阅模式+一系列的诸如compose、map、flapMap等操作符运用的集合,而观察者模式氛围两个部分,一是被观察者Observable,另一个就是订阅者Subscriber,观察者持有订阅者的引用,能够在执行一系列操作后,通过该引用执行订阅者方法,从原创 2017-11-16 11:26:55 · 363 阅读 · 0 评论 -
Thread和Runnable之间的关系
之前写了好几篇文章,对目前自己的水平来说都比较勉强,脑细胞死掉很多。今天,本文来聊简单一点的,轻松加愉快的话题,那就是Thread和Runnable之间的关系。为什么要说这个因为平时自己很喜欢无脑用这两个东西来开线程运行,但是从来没想过它俩关系这个问题,既然想到了就得来探究下。1、开线程的用法关于Thread和Runnable开线程用法,我是比较喜欢的,上代码。new Thread(new Runn原创 2017-11-09 23:23:55 · 1420 阅读 · 0 评论 -
关于Dagger2组件的实现方法及使用
这几天真心为了学习dagger2花费了很多精力,对于什么@Scope、@Provides、@Component、@Module、@Named之类的关键字还比较好理解,其实关于编译后的dagger源码也都比较好理解,也正是因为读dagger2编译源码知道dagger2不是基于反射来实现的依赖注入,而是通过apt包生成对应工厂类来实现依赖注入。既然这些都知道了按理说使用dagger2应该不是什么难题了,原创 2017-11-08 10:28:44 · 620 阅读 · 0 评论 -
OkHttp3向服务器同步提交各种数据的写法
最近公司业务需要学习OkHttp3,那么就先从写一个关于其基本用法的demo开始。1、添加依赖包compile 'com.squareup.okhttp3:okhttp:3.3.0'2、关于RequestBodyOkHttp3提交的数据时放在RequestBody中的,在提交时需要制定提交的Content-Type。常用的数据类型有application/x-www-form-urlencoded原创 2017-09-28 23:04:00 · 3391 阅读 · 0 评论 -
RecyclerView 上拉加载更多下拉刷新的一种实现
RecyclerView作为用来取代ListView的列表,其使用越来越广泛。这篇博文结合前辈文章补充说明其对上拉加载更多,下拉刷新的一种实现。一、实现方法说明关于下拉刷新,可以用谷歌提供的SwipeRefreshLayout来实现,而对于上拉加载更多观察RecyclerView.Adapter的onCreateViewHolder(ViewGroup parent, int viewType)中的原创 2017-09-11 11:01:18 · 1072 阅读 · 0 评论 -
关于Android向前兼容和向后兼容问题的理解
最近在和别人交流的的时候涉及到Android开发向前兼容和向后兼容的问题一头雾水,于是乎定下心来好好研究了下,虽然所知也只是些皮毛,但是也总比啥也不知道的好。所以在此总结!一、向前兼容1、何谓向前兼容google公司在不断的发步新的android版本,这不现在都到8.0了。那么自己刚刚发布到应用商店的app如何在android 8.0手机上正常运行呢,这就是所谓的向前兼容了。2、如何实现向前兼容这个原创 2017-09-18 11:01:56 · 6677 阅读 · 3 评论 -
关于android控件PopupMenu使用的一些说明
android 控件popupmenu使用的一些说明,记录下来,以备今后查阅。原创 2017-09-05 18:19:31 · 1948 阅读 · 0 评论 -
Android 自定义View及其在布局文件中的使用示例
前言: 尽管Android已经为我们提供了一套丰富的控件,如:Button,ImageView,TextView,EditText等众多控件,但是,有时候在项目开发过程中,还是需要开发者自定义一些需要重复使用的控件,使之能像Android提供的其它控件一样,使用起来方便,幸好Android为我们自定义控件过程扫除了障碍,提供了一套基础的类(如:View,Canvas等)和XML标签(转载 2015-11-11 17:31:52 · 760 阅读 · 0 评论 -
ScrollLayout
一.扯淡一直以来都是在索取,而没有贡献,所以希望能够也写点东西做点总结。希望对大家有帮助,自己也是一个学习总结的过程.坚持坚持坚持。今天给加大推荐一个好东西--ScrollLayout(滑动),他其实是一个左右滑动屏幕的控件,同样来自oschina的项目.可能大家之前都用viewpage.或者说现在还有actionbar,之所以推荐他,就是因为他真的是封装的非常好.完全转载 2015-11-11 09:47:37 · 511 阅读 · 0 评论 -
ContentProvider详解
转自:http://www.cnblogs.com/linjiqin/archive/2011/05/28/2061396.html一、使用ContentProvider(内容提供者)共享数据ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvi转载 2015-10-23 15:53:45 · 422 阅读 · 0 评论 -
CordovaActivity加载Web页源码分析
之前做项目直接用WebView加载url显示Web页,感觉简单无比。最近接触项目,采用的是Cordova框架实现,其中Activity继承自CordovaActivity然后在onCreate代码中就直接调用loadUrl(url)就加载网页了,当时我的小心脏扑通跳啊,因为当时知道Cordova框架还是基于WebView来实现的混合开发框架,所以为了一探究竟,觉得研究研究源码看看到时是在什么地方通过原创 2017-11-01 17:28:29 · 3419 阅读 · 2 评论 -
Socket在Java中的使用
这两天研究OkHttp3在Android端的使用,然后想探究其底层通信是怎么实现的。因为原来有个概念就是Android这边的第三方网络框架都是基于HttpClient或者HttpURLConnection来实现的,特别是现在基本上都是使用HttpURLConnection来实现网络通信,所以现在研究OkHttp3的时候,我一直以为其底层也是基于HttpURLConnection来实现网络通信的,及我原创 2017-11-17 10:06:11 · 2601 阅读 · 0 评论 -
Android中的文件读写操作
在android开发中文件操作使用的其实还是比较高频的,之前我遇到这种需求都随便写写,对此没有一个比较全面的认识,所以想借这篇文章来梳理一遍。由于需要读写文件,这包含了读写外部sd card的文件,所以需要添加对饮的读写权限<!-- SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT原创 2017-11-30 14:21:58 · 30750 阅读 · 4 评论 -
Android Library发布到Maven仓库以及使用
如同以往的博客一样,先来说说为什么要写这篇博客吧。昨天做了一个android类库,由于有资源文件,所以打包成了aar,于是顺利将其集成到其它项目中,看起来没问题可以用,但是调试时候发现类库dependency中compile的第三方包没有正确的打包进来。这就悲催了,总不能在新的项目中将类库中需要的包compile进来啥,这不久太low了么,于是绞尽脑汁想解决办法,在网上找到不少资料说将类库发布到本地原创 2017-11-29 15:46:57 · 2279 阅读 · 0 评论 -
关于OkHttp3源码分析
OkHttp3可以说很目前很流行的网路访问框架了,它可以帮我实现重定向访问,而且其还有缓存机制能够帮我们减少与服务器的交互,它还支持gzip格式的response,这能够有效的帮我们节省流量。从以上可以看出OkHttp好处是大大的多,而OkHttp从使用上来说也是很简单的,即可以通过execute方法完成同步网络访问,通过enqueue方法来完成异步网络访问。这边文章的目的并不是想对OkHttp3的原创 2017-11-20 16:49:18 · 565 阅读 · 0 评论 -
Java中的单例模式
接触设计模式的时候恐怕最早也是最容易的就是单例模式了,单例模式的目的是使得一个类的对象在整个程序的运行过程中都保证是同一个对象,实现单例模式的方式有两种,一种是懒汉单例模式,一种是饿汉单例模式,这里就直接以代码来说说明吧。1、懒汉单例模式实现//懒汉式单例模式public class SingleInstance { private SingleInstance(){ } p原创 2017-11-14 22:27:51 · 240 阅读 · 0 评论 -
关于使用plugman添加自定义插件过程中遇到的坑
其实之前也转载过一篇关于使用plugman添加MyMath插件的文章,照着那篇文章的确可以添加MyMath插件,但是本人比较偏执不喜欢文章中用到的SimpleMath作为插件id,同时也想把自定义插件放在自定义package路径下统一管理,而不是放在SimpleMath对应的路径下,那么就碰到一系列的坑了,而本文正是在解决这些坑的过程中的经验总结。本文要做的是通过plugman生成MyMath插件,原创 2017-11-05 19:22:26 · 1725 阅读 · 0 评论 -
Retrofit2实现源码分析
最近研究Retrofit2+RxJava实现网络请求及数据集处理,一部分的知识点就在Retrofit2,为了更好的理解代码,本人决定分析下Retrofit2源码,既然是分析源码就得带着目的去分析,那么说说本文要解决的问题吧,先看代码来说明Retrofit retrofit = new Retrofit.Builder() .client(new OkHttpClient())原创 2017-11-14 17:49:29 · 311 阅读 · 0 评论