
Android
清浅岁月
这个作者很懒,什么都没留下…
展开
-
LeakCanary 原理分析
LeakCanary 原理分析LeakCanary的初始化LeakCanary2.3的引入: debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.3'2.3版本无需在Application中做额外操作。深入了解一下具体是如何初始化的,我的是2.3版本的,2.0以下版本应该和这个不一样:https://github.com/square/leakcanary/blob/main/leakcanary-objec原创 2020-09-20 10:53:16 · 260 阅读 · 0 评论 -
Android 桌面应用启动APP的流程
桌面应用启动APP的流程一:概图具体代码分析zygote进程fork一个进程后调用ActivityThread的systemMain方法,也就是上图中的步骤3:ActivityThread 相关代码,systemMain是app真正的入口方法: public static ActivityThread systemMain() { // The system process on low-memory devices do not get to use hardware原创 2020-09-20 10:48:23 · 757 阅读 · 0 评论 -
kotlin的基础知识
kotlinkotlin变量声明val 与varval 定义不可更改的属性 类似于Java的final修饰过的字段var 定义可变的的属性完整的定义:var <propertyName>[: <PropertyType>] [= <property_initializer>][<getter>][<setter>]var vertexCount: Int set(value) { vertexCount原创 2020-09-20 10:38:26 · 513 阅读 · 0 评论 -
内部类隐式持有外部类
内部类隐式持有外部类源码package com.example.testdemo;public class OutClass { int out =2; public class InnerClass{ int in=1; }}编译成.class文件,有两个文件内部类InnerClass//// Source code recreated from a .class file by IntelliJ IDEA// (powered by F原创 2020-09-20 10:35:21 · 235 阅读 · 0 评论 -
java的注解
java的注解为什么使用注解1.注解,统一代码风格,易于理解框架类代码2.编程简洁,代码清晰3.跟踪代码依赖性,实现替代配置文件功能4.输出编码文档java的注解的使用jdk自带的注解一个是@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。 一个是@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会产生警告信息,可以设定在程序里...原创 2019-07-31 22:12:37 · 158 阅读 · 0 评论 -
Glide的简单梳理
#GlideGlide的使用 implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'简单的使用RequestOptions options =new RequestOptions().center...原创 2019-07-28 17:24:38 · 315 阅读 · 0 评论 -
Retrifit简单的梳理
这里写自定义目# RetrofitRetrofit的 一次网络请求流程,以及API接口中的参数是如何获取的欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图...原创 2019-07-28 17:22:44 · 685 阅读 · 0 评论 -
插件化开发整体流程
四大组件(Activity)1.将宿主APk的dex和插件APK的dex数组合并2.将启动的Activity(Intent) 替换成占坑的Activity,绕过检测。反射获取AMS的代理的startActivity方法3.将占坑的Activity替换成目标Activity,通过Handler的CallBack,在ActivityThread里面的发送消息的Handler没有设置Call原创 2018-01-16 20:01:51 · 627 阅读 · 0 评论 -
Android 插件化开发<一>
Android 插件化开发有两方面,一是代码的加载,二是资源的加载。基于上一篇Android activity的启动方式先对代码的加载说一下,下一篇说一下资源的的加载。插件化:将一个未安装的apk下载到本地,在未安装的情况下,宿主app可以打开apk 的activity,严格的插件化和组件化需要大家百度科普一下。上一篇中提到最后是调用ActivityThread的中的performLaun原创 2018-01-16 15:37:12 · 335 阅读 · 0 评论 -
Android Activity的启动
Android 应用程序启动,正常都是从Launcher里面点击应用图标,Luncher响应点击效果,开启对应的应用程序。Luncher本身就是一个应用程序,只是Android系统在启动后自动开启的一个应用程序。Activity的启动包括MainActivy和普通的activity,我们先大概的了解启动的流程后,再查看源码,这样了解的比较清晰,容易掌握。 分一下几个步骤: (1)Launche原创 2018-01-12 19:38:50 · 2010 阅读 · 1 评论 -
Retrofit对接口加解密
前两天因为短信验证码接口被人恶意调用,狂刷验证码账户里的钱,所以做了一次数据加密。网络请求使用的是Retrofit,解析工厂用的是GsonConverterFactory,依赖的是 compile 'com.squareup.retrofit2:converter-gson:2.1.0'<一>解密部分本来是打算加密整个messagebody的就是直接过来的消息体就是整个未解析的json串来加密的,原创 2017-08-13 10:16:18 · 1802 阅读 · 0 评论 -
Android多线程下载断点续传
先上图看卡结果: GITHUB:Android多线程下载断点续传 下载杵这儿 如图所示点击下载就开始下载,点击停止就会停止再次点击下载就会接着下载了。 设计思路是这样的: 首先通过广播将下载信息传递给DownService,DownService根据文件URL获取文件大小,再通过DownTask将下载任务分配,并且通过广播当点击停止下载时将下载进度保存在数据库中,当点击开始下载原创 2016-05-13 12:28:26 · 5346 阅读 · 1 评论 -
自定义ViewPager Indicator
先上效果图: 上面的指示器ViewPager Indicator是继承自LinearLayout,随着手指的滑动不断的向前滚动,指示器滚动到对应的标签并且文字出现高亮,指示器上的小三角型,也随之滚动。 下面是布局代码`<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android原创 2016-05-23 23:17:19 · 707 阅读 · 0 评论 -
AIDL
前一段时间学习了一哈AIDL今天复习的时候把他发出来 AIDL: Android Interface definition language的缩写,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。 提到AIDL就必须提到ICP。ICP:interprocess communication :内部进程通信 今天用AndroidStud原创 2016-05-13 18:52:11 · 602 阅读 · 0 评论 -
Crashlytics工具的接入
最近应公司上级的指示,要接入Crashlytics来进行bug统计工具。根据官网的指示安装出现了好多坑,费了点劲接入了,但是本人感觉没有啥卵用。。。具体的看下面这篇文章的介绍[移动平台奔溃收集]。(http://blog.youkuaiyun.com/zhuobattle/article/details/50848745?locationNum=13) 我的开发工具是AndroidStuidio,Eclips原创 2016-09-18 16:17:51 · 4719 阅读 · 0 评论 -
Android事件分发<二>
上一节简单的介绍了Androd事件分发的流程,这一小节介绍一下之前的那三个方法的作用。 dispatchTouchEvent: 这个方法作用它的命名一样disspathTouchEvent,事件分发。 onInterceptTouchEvent: Intercept,”拦截”的意思,即事件拦截,当我们操作该方法可以决定是否将事件继续往下传递,当它的返回值为true时,就可以原创 2016-11-07 14:43:22 · 354 阅读 · 0 评论 -
Android事件分发<一>
Android事件分发一直是硬伤,项目中不断出现各种View滑动冲突所以想研究一下彻底的了解android事件分发。 先来了解一下事件的分发主要有以下几个方法:public boolean dispatchTouchEvent(MotionEvent ev)public boolean onTouchEvent(MotionEvent event) public boolean onInter原创 2016-10-30 22:17:57 · 369 阅读 · 0 评论 -
Nexus搭建Maven私服上传与下载项目
为啥要搭建Maven私服呢,因为有时候公司不便将一些内部封装好的jar或者aar的架包放到外网上,或者当项目大一点的时候需要将一些业务封装成一个模块,来使用就需要本地私服了。 一 Nexus的搭建1:首先得安装Java的jdk; 2:下载Nexus:https://support.sonatype.com/hc/en-us/articles/218637467-Download-Nexus-Re原创 2017-02-20 23:55:18 · 742 阅读 · 0 评论 -
RecyclerView 上拉加载更多以及下拉刷新
RecyclerView 已经出来很久了,但是在项目中之前都使用的是ListView,最近新的项目上了都大量的使用了RecycleView.尤其是瀑布流的下拉刷新,网上吧啦吧啦没有合适的自己总结了一哈。 先贴图上来看看: 使用RecyclerView实现上拉加载更多和下拉刷新的功能我自己有两种方式: 1.使用系统自带的Android.support.v4.widget.SwipeRefre原创 2016-09-16 12:50:57 · 4337 阅读 · 1 评论 -
Android 内存溢出与内存泄漏的简单分析与解决
内存溢出与内存泄露首先我们要知道内存溢出与内存泄露的概念,什么是内存溢出和内存泄露。 内存溢出:就想杯子里得水满了,就溢出了。内存溢出就是分配的内存被用光了,不够用了。 内存泄露:就如同杯子里面有石子,导致杯子里面的一部分空间没有被利用,在APP中内存泄露就是指该被回收的内存没有被回收,导致一部分内存一直被占着,可利用内存变少了。当泄露过多 时,可利用的内存越来越少,就会引起内存原创 2017-03-16 10:16:54 · 11952 阅读 · 0 评论 -
Android分析主线程与子线程,以及子线程之间相互通信
通过查源码来不断的学习Android的消息发送机制,一直在使用但对此具体如何实现的从未探索过,希望通过这段时间的不断学习更加深入了解。原创 2015-08-04 09:57:18 · 4690 阅读 · 0 评论