android 中级
太过平凡的小蚂蚁
这个作者很懒,什么都没留下…
展开
-
安卓各版本大变化(Android 6.0到10.0),兼容适配
Android 5.0Material DesignART虚拟机Android 6.0应用权限管理官方指纹支持Doze电量管理运行时权限机制->需要动态申请权限Android 7.0多窗口模式支持Java 8语言平台需要使用FileProvider访问照片安装apk需要兼容Android 8.0通知画中画自动填充后台限制自适应桌面图标->...转载 2020-04-12 11:08:41 · 3073 阅读 · 0 评论 -
Handler.postDelayed()工作原理
转载:https://blog.csdn.net/qingtiantianqing/article/details/72783952原文:使用handler发送消息时有两种方式,post(Runnable r)和post(Runnable r, long delayMillis)都是将指定Runnable(包装成PostMessage)加入到MessageQueue中,然后Looper不断...转载 2020-04-01 20:26:44 · 840 阅读 · 0 评论 -
Android自定View
一、View绘制机制Veiw绘制流程二、View传递机制1.参考传递机制(1)传递机制(2)原创 2019-11-12 16:32:47 · 190 阅读 · 0 评论 -
Android 内存泄露实战例子
1. 内存泄露简介内存泄露,即Memory Leak,指程序中不再使用到的对象因某种原因从而无法被GC正常回收。发生内存泄露,会导致一些不再使用到的对象没有及时释放,这些对象占用了宝贵的内存空间,很容易导致后续需要分配内存的时候,内存空间不足而出现OOM(内存溢出)。无用对象占据的内存空间越多,那么可用的空闲空间也就越少,GC就会更容易被触发,GC进行时会停止其他线程的工作,因此有可能会造成界...原创 2018-09-19 15:07:37 · 2031 阅读 · 0 评论 -
Android ViewGroup事件分发有这一篇就够了
写这一篇文章之前我看了好多遍事件分发机制的流程,并且来自不同的书籍,但始终无法记住事件分发流程。于是我写了一个demo分析事件分发的流程,目的为了找到事件分发机制的规律方便记忆。以下是总结的规律,如果错误请及时举报原创 2018-09-24 22:33:55 · 291 阅读 · 0 评论 -
Drawable和Bitmap的区别
Drawable和Bitmap的区别转载 2018-10-29 10:46:47 · 1129 阅读 · 0 评论 -
android UI适配
本次项目中用了autosize头条适配方案。这次顺带把UI适配原理总结一下。1.首先要明白一个公式:公式:dp值×(当前dpi/160dpi)=>得出当前的像素数目px :平常所说的1920×1080只是像素数量,也就是1920px×1080px,代表手机高度上有1920个像素点,宽度上有1080个像素点。dpi:要想判别手机屏幕的显示好坏,还要考虑屏幕的宽高(英寸),也...原创 2019-03-26 08:29:36 · 824 阅读 · 0 评论 -
android跨进程通信
这篇文章涉及的知识点:Binder的应用场景及原理 AIDL的应用场景及原理 Messenger的应用场景及原理 Service官网:注:只有允许不同应用的客户端用 IPC 方式访问服务,并且想要在服务中处理多线程时,才有必要使用 AIDL。 如果您不需要执行跨越不同应用的并发 IPC,就应该通过实现一个 Binder 创建接口;或者,如果您想执行 IPC,但根本不需要处理多线程...原创 2018-11-11 21:48:32 · 485 阅读 · 0 评论 -
Android View绘制流程
1. onMeasure() 2.onLayout() 3.onDraw()原创 2018-09-17 17:28:11 · 158 阅读 · 0 评论 -
Android ANR
ANR全称:Application Not Responding,即应用程序未响应。主要原因:应用程序进程中的主线程响应超时,则会产生ANR(1)应用程序自身引起的。比如:主线程阻塞、挂起、死循环、执行比较长的耗时操作(2)其他进程引起的。比如:其他进程对CPU的时间占用率过高,导致应用进程抢不到CPU的时间片。响应超时体现:(1)应用程序的主线程对输入事件,5s内没有处理...转载 2018-09-06 16:06:43 · 155 阅读 · 0 评论 -
app瘦身
Android App开发瘦身大揭秘,让你的App瘦下来2018.08.28 15:28 46浏览举报 字号现在Android App开发,可执行文件的体积在不断的变大。第三方依赖的SDK,jar包,依赖库,为了追求良好的视觉效应的高清图片,国际化的适配等等,不断的在扩大着我们的应用体积。但是对于用户来说,他们的需求就是,功能在不见少的情况下,App的体积越小越好。目前...转载 2018-09-06 15:29:32 · 361 阅读 · 0 评论 -
okhttp源码阅读-同步请求实现(二)
同步请求看完了,看了大概两天。看的过程中我也有很多疑惑,看完之后感觉很明朗。疑惑有一下三点1.请求加入了同步队列,为什么没有从队列中取出请求去请求网络,放入队列的作用是什么?2.RealInterceptorChain类中的proceed()方法调用Interceptor实现类中的intercept(next)方法接着Interceptor实现类中的intercept()方法调用Rea...原创 2018-08-16 19:07:47 · 187 阅读 · 0 评论 -
android事件分发机制
1.ViewGroup有三个方法:Touch 事件相关方法 方法功能 标记 dispatchTouchEvent(MotionEvent ev) 事件分发 1 onInterceptTouchEvent(MotionEvent ev) 事件拦截 2 onTouchEvent(MotionEvent ev) 处理事件 3 这样,V...转载 2018-08-13 11:20:35 · 122 阅读 · 0 评论 -
okhttp源码阅读-异步请求实现(三)
异步请求代码:OkHttpClient client = new OkHttpClient();Request request = new Request.Builder() .url("https://api.github.com/repos/square/okhttp/issues") .header("User-Agent", "OkHttp Hea...原创 2018-08-17 22:01:34 · 238 阅读 · 0 评论 -
EventBus底层实现原理
2种思路去读EventBus源码1.注册 EventBus.getDefault().register(this);2.发送消息EventBus.getDefault().post();根据1追到了findSubscriberMethodsWithReflection 根据反射查找订阅者,代码如下里面的内容不解释了,返回的是一个订阅方法的集合。private List<...原创 2018-08-12 18:27:36 · 11872 阅读 · 0 评论 -
android 适配
转载https://www.jianshu.com/p/a4b8e4c5d9b0Android 目前最稳定和高效的UI适配方案Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解。刚好,近期准备对糗事百科Android客户端设计一套UI尺寸适配方案,可以和小伙伴们详细的聊一聊这个问题。An...转载 2019-03-19 20:21:52 · 431 阅读 · 0 评论 -
android 混淆
混淆介绍Proguard是一个Java类文件压缩器、优化器、混淆器、预校验器。压缩环节会检测以及移除没有用到的类、字段、方法以及属性。优化环节会分析以及优化方法的字节码。混淆环节会用无意义的短变量去重命名类、变量、方法。这些步骤让代码更精简,更高效,也更难被逆向(破解)。混淆后默认会在工程目录app/build/outputs/mapping/release(debug)下生成一个mapp...转载 2019-03-20 17:27:02 · 125 阅读 · 0 评论 -
Rxjava源码——map操作符
思路:一、ObservableCreate二、ObservableMap三、调用思路和源码逻辑四、生产环境代码五、画图总结ps:subscribe()是Observable中的的方法,因为ObservableCreate和ObservableMap都继承了Observable所以把该方法放到了这两个类中一、ObservableCreatepublic f...原创 2019-07-31 21:59:39 · 471 阅读 · 2 评论 -
Rxjava源码——订阅
看完订阅的源码发现Rxjava包装了被观察者对象,然后其它比较容易理解。1.创建被观察者Observable observable = Observable.create( new ObservableOnSubscribe<String>() { @Override ...原创 2019-07-30 15:36:06 · 143 阅读 · 0 评论 -
Rxjava源码-------线程切换
目的:1.理清楚线程切换的流程2. subscribeOn()为什么调用多次只有第一次是有效的3. observeOn()可以多次使用在有了Rxjava订阅和map操作符的基础上,我们来分析subscribeOn()这个方法。subscribeOn这个方法也创建了一个被观察者,即ObservableSubscribeOn这个类,基于之前的基础之上自然而然能够找到显眼的一行...原创 2019-08-02 18:09:36 · 218 阅读 · 0 评论 -
Android仿qq侧滑——上
16年那会写项目用到了仿qq测滑删除,那时候只是一顾的搬代码,这段时间在学习自定义View,把之前的代码梳理了一下,写了一个仿qq测滑的效果代码如下,注释写的很清楚了。接下来会升级一下在ItemView下放三个子Viewpackage com.monitor.atmosphere.slide;import android.content.Context;import andro...原创 2019-07-17 17:20:37 · 446 阅读 · 0 评论 -
LruCache初次了解
之前有看到过关于LruCache的面试题,今天趁空闲时间看一下LruCache原理,里面巧用了LinkedHashMap。参考了两篇文章:https://juejin.im/post/5a4b433b6fb9a0451705916fhttps://www.jianshu.com/p/b49a111147ee第一个是基于LinkedHashMap讲的,第二个是基于LruCache...原创 2019-06-28 11:46:27 · 281 阅读 · 0 评论 -
setimageresource oom
bugly报出的一个oom,当时看到很惊讶,使用setimageresource已经是家常便饭。结合项目来说,当大量频繁的需要使用setImageresource时可能会出现oom,如果在小二不频繁下一般是不会报oom的。查资料得到的信息:这篇博客的地址,可能这个兄弟也遇到过这个情况。https://blog.csdn.net/mouse12138/article/detail...转载 2019-06-27 17:10:46 · 467 阅读 · 0 评论 -
自定义view-——随手指移动
自定义view可拖动的小圆点/** * Created by donghe on 2019/7/7. */public class MyView extends View { //定义画笔和初始位置 Paint p = new Paint(); public float currentX = 50; public float current...原创 2019-07-07 22:25:27 · 194 阅读 · 0 评论 -
Android性能优化
一、布局优化布局层级相同的情况下用Linearlayout而不用relativelayoutwrape_content 不调用ondraw()两次,有精确的尽量不要使用view_stub 特点是隐藏布局,内存占用为0二、内存优化bitmap 即时回收,缩小比例,使用软引用,android 分配bitmap为8M 文件流即时关闭,数据库操作即时关闭。内存泄漏:生命周期不一...原创 2019-03-27 08:24:00 · 202 阅读 · 0 评论 -
RecyclerView原理分析
1.为什么要了解RecyclerView原理2.源码分析原创 2019-03-27 08:08:05 · 480 阅读 · 0 评论 -
SharedPreference了解
今天调试代码发现大量的sp操作耗用了近3秒时间,当然里面交叉了gson操作。所以下面我查看了有关SharedPreference的文章https://www.jianshu.com/p/63ee8587de3f这是一篇非常有深度的文章。引用这篇博客上面的代码 SharedPreferencesImpl(File file, int mode) { mFil...原创 2019-03-30 22:16:07 · 214 阅读 · 0 评论 -
okhttp源码阅读(一)
昨天电面腾讯让说一下okhttp源码,之前看过okhttp源码but不知道怎么去下手,今天又看了一下首先从构建OkhttpClient说起吧。mClient = new OkHttpClient.Builder() .connectTimeout(10,TimeUnit.SECONDS) .readTimeout(15, Tim...原创 2018-08-14 16:40:29 · 388 阅读 · 0 评论 -
Looper.loop()为什么不会阻塞主线程?
今天看IntentService时看到了Thread的run方法如下:@Overridepublic void run() { mTid = Process.myTid(); Looper.prepare(); synchronized (this) { mLooper = Looper.myLooper(); notifyAll()...原创 2018-08-09 17:37:07 · 6628 阅读 · 2 评论 -
recyclerview仿qq滑动删除
Recyclerview实现仿QQ滑动删除原创 2016-08-02 17:10:20 · 1779 阅读 · 1 评论 -
Rxjava从源码分析代码
RxJava 从源码看清代码原创 2017-08-24 22:59:51 · 214 阅读 · 0 评论 -
百度地图marke
http://yangpanwww.iteye.com/blog/2272193转载 2017-06-28 21:38:13 · 193 阅读 · 0 评论 -
Handler 源码解读
阅读源码的姿势原创 2017-05-06 22:58:23 · 214 阅读 · 0 评论 -
Android Service -详解
考虑到项目的需要在Android UI主线程结束后还要做一些操作就把Service给拿了出来。Service 可以按本地服务和远程服务来划分。本地服务生存在UI主线程中,即UI主线程挂掉之后Service已经不存在了。远程服务不依赖于UI主线程,远程服务可以单独运行在一个进程中。如何配置一个远程Service?android:process 这个属性决定了它是远程服务,当然它的配置也是挺讲究的,原创 2017-04-29 22:28:38 · 738 阅读 · 0 评论 -
Android Studio中Butterknife使用教程
Android Studio 中集成Butter Knife 使用详解原创 2017-03-09 15:50:37 · 319 阅读 · 0 评论 -
回调函数
接触到回调函数已经很长时间了,一直没有明白,好吧躲也躲不过去今天总算明白了回调函数的的概念。A通过B传给A的地址(注意地址是B函数的地址)去掉用B。 这种现象就叫做回调,相应的A就是主调函数,B就是回调函数。原创 2015-12-17 11:21:13 · 315 阅读 · 0 评论 -
android 模拟表单文件上传servlet
参考:http://javawangbaofeng.iteye.com/blog/2230917转载 2016-07-20 22:57:32 · 216 阅读 · 0 评论 -
android虚拟机上安装SD卡
纠正一个地方在android虚拟机上安装SD卡不是 :“在cmd命令行下,进入platform-tools目录下” 应该是在 "在cmd命令行下,进入sdk/tools"然后下面:1.创建sdcard mksdcard -l mycard 256M E:\android\myCards\mysdcard.img 这样就在该目录下创建好了一个SD原创 2016-03-26 12:08:39 · 1242 阅读 · 0 评论 -
使用android studio集成极光推送
用Android studio集成激光推送sdk原创 2016-08-05 20:46:33 · 4373 阅读 · 0 评论 -
实现RecyclerView的item点击事件的内部监听器
代码如下:public class myViewholder extends RecyclerView.ViewHolder implements View.OnClickListener{ private TextView tv_bookname; private TextView tv_bookauthor; private TextView tv_bookin原创 2016-07-29 09:59:04 · 2578 阅读 · 0 评论