- 博客(28)
- 收藏
- 关注
原创 OkBus
OkBusgithub 地址 项目地址特点 :支持 线程切换支持 为方法打标签 根据标签发送数据支持 泛型参数以及发送泛型数据不使用反射调方法支持 发送给指定页面 或者 tagEventbusandroid里面我们都知道EventBus事件总线 来处理我们的事件分发,确实从一定程度上解决了android的一些通信问题,但是其自身的弊端也不容忽视,在我看来主要是两点1.E...
2019-11-16 15:13:19 335
原创 Android 打包相关
Adroid 打包相关apk打包流程 1. aapt工具打包资源文件,生成R.java文件 2. aidl工具处理AIDL文件,生成对应的.java文件 3. javac工具编译Java文件,生成对应的.class文件 4. 把.class文件转化成Davik VM支持的.dex文件 5. apkbuilder工具打包生成未签名的.apk文件 6. jarsigner...
2019-06-27 15:42:16 216
原创 ClassLoader(java 与 android 对比)
ClassLoader(java 与 android 的区别)Java ClassLoaderJVM主要有三类ClassLoader:Bootstrap、Extention、Application,该三类ClassLoader从上到下是分级(hierarchy)结构,遵循代理模型(Delegation Model)。Bootstrap ClassLoader:也称为primordia...
2019-06-27 15:40:06 248
原创 volatile实现原理
volatile实现原理volatile可以保证线程可见性且提供了一定的有序性,但是无法保证原子性,即 volatile 保证了 可见性和有序性 没有原子性 。在JVM底层volatile是采用“内存屏障”来实现的。问题的提出 计算机在运行程序时,每条指令都是在CPU中执行的,在执行过程中势必会涉及到数据的读写。我们知道程序运行的数据是存储在主存中,这时就会有一个问题,读写主存中的数据没...
2019-06-27 15:38:15 327
原创 Android APT
Android APT文章目录Android APT注解类型注解的处理运行时注解的处理编译时注解的处理javapoetAPT annotation processing tool 注解处理工具注解类型注解语法注解通过@interface关键字来定义@Retention(RetentionPolicy.CLASS)@Target({ElementType.FIELD, Elem...
2019-06-27 15:36:20 917
原创 Java 锁总结
java锁文章目录java锁synchronized对象锁类锁思考的问题synchronizedjava的关键字,是一个互斥 非公平锁synchronized 能够自动释放锁,但是等待的线程不会中断一直阻塞直到获取到锁,也无法获取到某个线程是否获取到锁java JDK1.6之后对synchronized进行了优化,把锁分了等级以减少资源的消耗。引入了 偏向锁 轻量级锁 重量级锁 参...
2019-06-27 15:33:20 338
原创 生产者消费者模型
生产者消费者模型文章目录生产者消费者模型什么是生产者消费者模型模型代码实际应用实例什么是生产者消费者模型生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的...
2019-06-27 15:32:00 234
原创 JVM内存模型总结
JVM内存模型文章目录JVM内存模型整体架构类加载器 ClassLoader运行时数据区整体架构JVM = 类加载器(classloader) + 执行引擎(executionengine) + 运行时数据区域(runtime dataarea)java每个线程都有一个虚拟机栈类加载器 ClassLoader1.加载过程 7 个步骤 加载–>验证–>准备–>解析...
2019-06-27 15:29:21 156
原创 网络相关总结
网络相关知识文章目录网络相关知识三次握手四次挥手请求行 请求头 请求体状态码响应头网络七层协议URL如何访问到服务器的Https三次握手四次挥手三次握手首先 客户端 发送 SYN=1 seq=x 请求建立连接,服务端收到请求后 回复 SYN=1 ACK=1 seq=y ack=x+1 可以建立连接 客户端收到 回复后 发送 ACK=1 seq=x+1; ack=y+1 服务...
2019-06-27 15:21:12 113
原创 kotlin中Rxjava如何在Activity中优雅的自动取消订阅以及线程切换
文章目录对于使用Rxjava过程中难免会有一些重复的代码需要封装,但我们总不能跟java一样搞个工具类,那就很尴尬了,毕竟咱今天说的是kotlin啊。那我们就得从kotlin本身的拓展方法说起了,比如我们现在要实现一个窗的工具类,因为我们常常需要在Activity中Fragment中弹Toast,java里面一般是封装一个Utils如下public class ToastUtils { ...
2018-12-28 17:59:46 1196 1
原创 链表环相关算法问题
这些算法问题网上有很多讲解的,因为要设计到一些数学的逻辑推算问题,所以看了很多刚开始真是没动整个推演过程是什么样子的,活生生从早上6点搞到下午有时间就想一下,没想上了趟厕所回来就知道怎么回事了,记录一下,以防再次忘记。检测链表是否有环这个问题我还是用快慢针吧,效率上是最高的...
2018-12-20 11:07:30 201
原创 Android Junit测试
文章目录Junit单元测试基础APIRecyclerView 处理Junit单元测试顾名思义 是对某个单元是否达到预期的测试,而单元在java里面倾向于一段代码一个方法或者一个类基本配置 //单元测试需要的类 testImplementation 'junit:junit:4.13-beta-1' androidTestImplementation 'com.android.s...
2018-12-17 14:48:14 299
原创 广告SDK开发学习笔记
第一次搞SDK的开发,简直是一脸懵逼,逻辑层的代码实现还好说,可是如何搭建SDK的框架呢,总不能撸一个app的 框架给SDK用吧,SDK本身要考虑的东西也很多,首先网络层 、整体架构、crash统计、事件统计,代码安全,热更 等问题不断的涌现,当然最好的老师就是撸一遍 三方的SDK看他们如何做的,主要有头条和 广点通。头条主要是教会了我 使用interface的编程思想,广点通呢主要是动态下发dex文件达到修复的效果,本文做以总结!
2018-12-12 15:53:35 8195 3
原创 Actvity绘制流程
文章目录setContentView()进入PhoneWindowhandleResumeActivity本文的绘制流程也是基于之前的几篇文章的(同上基于API——15)1. 安卓应用启动流程分析2. ActivityThread启动页面分析3. Activity创建流程分析上片Activity创建流程分析说到Activity已经创建了并通过Instrumentation调用了Activ...
2018-12-11 15:55:45 393
原创 Activity创建流程
Activity 创建流程分析在前两篇文章中我们谈到了从桌面点击图标到启动进程以及启动ActivityThread再到ActivityThread启动Activity的过程分析1. 安卓应用启动流程分析2. ActivityThread启动页面分析本片文章可谓是紧接着上面两篇文章,上文说到的ActivityThread performLaunchActivity(),今天继续讲从这里如何创...
2018-12-11 09:56:50 2399
原创 ActivityThead 启动页面分析
文章目录ActivityThead 路径之前的回忆ActivityThread 的main方法IApplicationThreadActivityStack 的 realStartActivityLockedActivityThead 路径之前的回忆上一篇文章我们分析了应用是如何从左面点击 到启动ActivityThread 的main方法的,简单的流程如下点击图标 --&gt...
2018-12-10 14:28:07 532
原创 单链表的反转
单链表反转package com.donews.frame.camera;/** * Created by Comers on 2018/12/9. * 描述: */public class Reverse { public static void main(String[] args) { Node node1 = new Node(1); ...
2018-12-09 17:45:52 131
原创 Java生产者消费者模型
文章目录什么是生产者消费者模型模型代码实际应用实例什么是生产者消费者模型生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来...
2018-12-09 15:19:54 267
原创 Android应用启动流程分析
文章目录从系统桌面 LauncherActivity 开始从系统桌面 LauncherActivity 开始LauncherActivity 内部其实就是用ListView把已经安装好的应用显示出来,那我们最关心的是什么呢,当然是从点击桌面的图标之后到底发生了什么 public abstract class LauncherActivity extends ListActivity {...
2018-12-09 10:47:36 5339 1
原创 IntentService源码欣赏
IntentService源码欣赏IntentService 总结1. IntentService源码欣赏我们先来看源码吧public abstract class IntentService extends Service { private volatile Looper mServiceLooper; private volatile ServiceHandler mSe
2017-10-15 15:02:13 446 1
原创 GreenDao的基本使用及实例
基础配置Project moudle配置 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.0' classpath 'org.green
2017-10-10 10:08:12 576
原创 Java数据结构和算法---排序
几种排序冒泡排序选择排序快速排序几种排序冒泡排序原理:冒泡排序:相邻两个数据进行比较,如果后面的比前面的数据小则进行交换,自然最大的那个数据被排到了最后。但是 ,效率很低,遍历了N次,同时需要交换N + (N-1)+(N-2)+...+2+1 ~ N*(N-1)/2 次代码 public class BubbleSort { public static void main
2017-10-10 09:46:39 212
原创 Java数据结构---数组
数组数组的声明数组的查找和删除数组数组的声明int[] ints=new int[10];int intss[]=new int[10];int intss[] =new int[]{1,4,6,7};int intsss[]={2,4,6,8};数组的查找和删除数组的缺点是长度固定,不能随着数据的大小变化而变化数组的查找 和删除假如有数组的长度为N,那么我们的查到到其中某个元素的平
2017-09-29 18:12:46 172
原创 安卓配置正式包和测试包不同的名字、图标、同时安装,(极光配置测试和正式)
需求正式应用和测试用应用需要同时安装在同一台手机上正式和测试拥有不同的签名、名称、图标。。。等等其他 例如 极光 配置不同账号,测试和正式的分开(吐槽也止呕极光才需要配置不同applicationId来区分,就这么而)配置前知识应用的 包名 和 applicationId 的区别 一般情况下我们不设置 applicationId的时候,会默认 applicationId和包名相等
2017-09-28 14:39:49 3228
原创 自定义View --画个钟表
github 源码地址 https://github.com/comerss/TimeKeeper我们需要知道钟表的坐标圆心,这里我设定屏幕的中心点为圆心,那我们首先要测量控件自己的宽高。mWidth = getMeasuredWidth(); mHeight = getMeasuredHeight();那么我们的圆心也就能计算出来了 宽高的一半 float radio
2017-09-27 14:25:34 312
原创 微信分享返回 错误码 -6 的情况!
错误码 -6在官方的文档里面并没有的 有的说是 微信缓存,可我卸载了N多次都是不行的当然如果key百分百正确的情况下不排除以上方法的有效性这个时候我开始考虑key是否错了,因为不是自己申请的,最终果然如此啦主要会可能有两个原因, 第一是 申请时 MD5的值不对 下面有查看方法 第二是 本地的微信Key值可能会不对 ,这是我遇到的两个主要的原因中间还有一次,是因为 MD5 的
2017-09-27 14:24:14 8518
原创 自定义View练习
自定义View一直是一个很头疼的问题,之前想写了很久就是写不出来,今天来写点入门的东西。首先我们为什么会觉得自定义view很难呢?第一是我们不知道怎么绘制,画线?画文字?第二各种距离的测量计算第三个是事件的处理,点击?滑动?先来看看我们的需求!!这是要实现的效果1 最终我做的效果大概分析一下就开干,然后边做边思考解决出现的问题!看着很简单,上面有一个进度条,但是不是均匀分布,中间还
2017-04-10 12:00:49 302
原创 CoodinatorLayout+Tablayout标题栏和下拉刷新放冲突问题
问题: 当我们使用coordinatorlayout 要显示带有下拉刷新并且,向上滑动式卡住tablayout同时标题栏要跟着滑出 去,问题来了,滑上去是没有冲突的,但是下滑的时候是想把标题栏下拉显示出来还是下拉刷新呢,当然都 不是我们想要的结果。我们想要的是先把标题栏显示出来,然后跟着刷新。解决方法:让 activity里面给appbarlayout设置offsetchangeList
2017-04-10 11:58:36 3611 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人