自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 android原生项目接入flutter开发的组件

目前主流的混合开发方案有两种集成方式:源码集成、产物集成本篇文件会详细介绍这两种集成方案的具体实现过程。由于开始在项目中使用了源码集成的方案,使用源码集成的方法,使用jenkins打包比较麻烦,需要管理两个工程的git仓库,所以后来改成了产物集成的方式。并在最终将产物集成方式整个过程自动化,方便代码及产物管理,接入成本大大降低。源码集成也就是谷歌官方提供的方案[https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-a.

2021-07-26 16:19:45 330

原创 android 缓存机制

LruCache采用LinkedHashMap作为存储的数据结构,所以先介绍一下LinkedHashMapLinkedHashMap构造函数,主要就是调用HashMap构造函数初始化了一个Entry[] table,然后调用自身的init初始化了一个只有头结点的双向链表。完成了如下操作:首先是只加入一个元素Entry1,假设index为0:当再加入一个元素Entry2,假设index为15:当再加入一个元素Entry3, 假设index也是0数据结构:LruCache采用LinkedHa

2021-01-28 10:38:47 314

原创 kotlin之koin

Koin是一款轻量级的依赖注入框架,根据官方的描述,它无代理,无代码生成,无反射。第一步:Gradle Setup// Add Jcenter to your repositories if neededrepositories { jcenter() }dependencies {// Koin for Androidcompile "org.koin:koin-android:1.0.1"// Koin Android Scope featurecompile "org.

2020-05-11 23:14:44 1188 1

原创 Android界面适配--Navigation Bar是否展示及高度计算

Navigation Bar是否展示及高度计算这两天遇到一个bug,这是别的同时写的计算逻辑,由于刚入职,为了让我熟悉流程,所以把这个问题分给了我。页面需要计算ListView的高度,listview高度=屏幕高度 - 页面title的高度-StatusBar的高度-HeaderView的高度-NavigationBar的高度,在小米10上headerView和listView之间有一个很宽的间...

2020-05-03 00:29:49 1050

原创 Android单元测试(二):Mockito框架的使用

mock数据mock引入方式mock数据的4种方式普通方式使用注解MockitoRule方式使用运行器方式常用的打桩方式方法验证方式"mock"一词是指模仿或者效仿。因此可以将“mock”理解为一个替身,替代者。单元测试的思路就是我们想在不涉及依赖关系的情况下测试代码。这种测试可以让你无视代码的依赖关系去测试代码的有效性,在实际的单元测试中,我们测试的类之间会有或多或少的耦合,导致我们无法顺利的...

2020-04-08 17:28:28 364

原创 Android单元测试(一):JUnit框架的使用

JUnit框架的使用前言工程介绍JUnit介绍什么是JUnitJUnit引入JUnit注解JUnit断言JUnit使用基础用法参数化测试前言以前工作中,没有写过测试用例,每次功能做完之后,都是运行在手机上或是模拟器上,进行测试。最近看了一些公司的招聘信息,部分公司要求会单元测试,于是了解了一下android单元测试的资料,我去,单元测试用起来真是好处多多,得抓紧时间学习一下了。工程介绍新建...

2020-03-25 18:17:41 1181

原创 android开发--compileSdkVersion、targetSdkVersion、Support库的作用与他们之间的关系

目录基本概念什么是 targetSdkVersioncompileSDKVersionminSdkVersion为何提供支持库基本概念什么是 targetSdkVersion每个Android版本都会对应一个API数字,例如Android 7.0对应的是API 24,当手机的Android系统版本升级的时候,会出现两种情况:提供了新的接口。如果开发者想要在APP中使用Android 7.0...

2020-03-19 09:38:07 499

原创 android--应用内更新app

目录android各版本新增限制适配Android 7.0适配Android 8.0:未知来源的应用权限app在线更新是一个比较常见需求,新版本发布时,用户进入我们的app,就会弹出更新提示框,第一时间更新新版本app。在线更新分为以下几个步骤:通过接口获取线上版本号,versionCode比较线上的versionCode 和本地的versionCode,弹出更新窗口下载APK文件(文件...

2020-03-18 17:17:43 601 2

原创 android开发-sp

Android SharedPreferences的理解与使用获取SharedPreferencesSharedPreferences的使用SharedPreferences内部实现原理SharedPreferences的内部类Editorcommit和apply分析Sharedpreferences是Android平台上一个轻量级的存储类,用来保存应用程序的各种配置信息,其本质是一个以“键-值...

2020-03-18 11:56:01 263

原创 android开发--内存泄露

内存泄露内存泄露Android的4种引用类型强引用 (StrongReference)软引用 (SoftReference)弱引用虚引用ReferenceQueue内存泄露检测工具LeakCanary(可以使用它来检测Activity是否能够被GC及时回收)android自带工具Profiler开发中常见的内存泄露问题Android 5.1 Webview 内存泄漏Handler导致内存泄露内存...

2020-03-09 17:08:12 280

原创 Android开发-Activity的启动过程

源码分析在调用activity的startActivity方法之后是怎么执行的,接下来通过跟踪源码,来理一下activity的启动过程。Activity#startActivity@Overridepublic void startActivity(Intent intent) { startActivity(intent, null);} @Overridepublic vo...

2020-03-09 10:40:28 211

原创 Android开发-Context理解(Applicatiion、Activity、Service 的Context区别)

Activity、Service、Application类继承关系借助Context真正的实现类,ContextImpl 可以这么理解上面关系:Context 类提供了一组通用的 API;ContextImpl 实现了 Context 所有的功能,为 Activity等应用组件提供 Context 对象;ContextWrapper 包含一个真正的 ContextImpl 的引用 mBa...

2020-03-09 09:32:22 309

原创 java内存及线程安全方面介绍

java内存及线程安全方面介绍Java中的堆和栈的区别java内存模型Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,其中蓝色部分代表的是所有线程共享的数据区域,而绿色部分代表的是每个线程的私有数据区域。方法区(Method Area):又称Non-Heap(非堆),主要用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,根据Java 虚拟机...

2020-02-29 15:40:16 239

原创 网络协议TCp、Udp介绍

网络协议TCP/IP网络协议栈模型TCP、UDP的特点UDP(1)面向无连接的(2)有单播,多播,广播的功能(3)面向报文的:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文(4)不可靠性: 只发,不保证能收到(5)头部开销小,传输数据报文时是很高效的...

2020-02-28 17:32:44 252

原创 android动态加载

android插件化插件化需要做的几件事加载插件dex将dex包注入ClassLoader(原理分析)将dex包注入ClassLoader(代码实现)Activity等组件问题加载插件中的资源刚进入一家公司,需要解决以下问题:公司主要是做仪器的,目前有4款app,以后还会增加几款,这样,同一个用户手机上可能需要装多款我们的app,这样不仅安装麻烦,而且不同的功能要打开不同的app,给用户造成不便...

2019-05-13 18:14:04 190

原创 HotFix方案原理

首先HotFix原理是基于Android Dex分包方案的,而Dex分包方案的关键就是Android的ClassLoader体系。ClassLoader的继承关系如下:这里我们可以用的是PathClassLoader和DexClassLoader,接下来看看这两个类的注释:PatchClassLoader/** * Provides a simple {@link ClassLoader} i...

2018-03-19 11:29:55 520

原创 view的绘制过程

一、view绘制view的绘制流程是从ViewRoot的performTraversals方法开始的,它经过measure、layout、和draw三个过程才能最终将一个View绘制出来,其中measure用来测量View发的宽和高,layout用来确认View在父容器中的放置位置,而draw则负责将View绘制在屏幕上。performTraversals会一次调用performMeasure、p...

2018-03-17 23:11:05 276

转载 Android:你要的WebView与 JS 交互方式 都在这里了

本文转载至:http://blog.csdn.net/carson_ho/article/details/64904691前言今天想着在梳理一遍WebView与JS之间的交互方式,增加记忆。在网上看到这篇博客,说的非常详细,所以保存下来,以后忘记的时候可以参考。今天我将全面介绍Android通过WebView与JS交互的全面方式阅读本文前请先阅读:Android开发:最全面、最易懂的Webview...

2018-01-10 23:29:59 294

原创 微信资源混淆使用

随着公司上市,我们app页需要在安全方面有更高的要求,目前我们只使用了ProGuard来保护代码的安全,但对资源文件的保护力度不大,但是资源文件是存在比较大的安全隐患 的。那资源会有哪些安全隐患呢?通过运行下面命令就能进行反编译;apktool d -s xxx.apk 通过上图中的目录结构,我们可以看到这个应用的

2017-11-26 15:33:52 1544

原创 andriod事件分发机制源码解析

首先需要知道一点,只要你触摸到了任何一个控件,首先一定会调用该控件的dispatchTouchEvent方法。当我们去点击按钮的时候,就会去调用Button类里的dispatchTouchEvent方法,可是你会发现Button类里并没有这个方法,那么就到它的父类TextView里去找一找,你会发现TextView里也没有这个方法,那没办法了,只好继续在TextView的父类View里找...

2017-08-19 20:06:14 275

原创 android IPC(进程间通信)机制

一、多进程的情况1.一个应用因为某些原因自身需要采用多进程模式实现。可能是某些模块由于特殊原因需要运行在单独的线程中;或是为了增大一个应用可以使用的内存空间。android对单个应用使用的最大内存做了限制,早期一些版本是16M,不同设备有不同的大小。2.当前应用需要向其他应用获取数据。二、Android中开启多进程模式在Android中使用多进程只有

2017-08-14 21:04:02 736

原创 android7.0及以上版本签名校验过程详解

对于新的签名方案APKSignatureSchemev2,在这篇文章中已经有详细的介绍http://www.tuicool.com/articles/bURRVrj。从这篇文章中可以知道,新的签名方案与旧的签名方案之间的对比是:图1新的签名方案生成与旧的签名方案相比,在zip文件中新增了一个APKSigningBlock区块。使用新的签名方案以后,在apk

2017-07-29 16:48:37 13810 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除