技术
文章平均质量分 56
王海萧
这个作者很懒,什么都没留下…
展开
-
productFlavors Android产品风味自定义、多渠道打包配置、应用瘦身
productFlavors Android产品风味自定义、多渠道打包配置、应用瘦身原创 2024-01-03 14:35:49 · 1060 阅读 · 0 评论 -
android项目出现依赖冲突的多个解决方案
安卓项目出现依赖冲突的多种解决方案原创 2024-01-03 13:55:13 · 1478 阅读 · 0 评论 -
Android Gradle 插件版本和 Android Studio版本对应关系
Android Studio 构建系统基于 Gradle,而 Android Gradle 插件添加了几个特定于构建 Android 应用的功能。根据自己的AndroidStudio版本去下载对应的Android Gradle 插件。原创 2023-02-01 17:38:41 · 664 阅读 · 0 评论 -
Glide无法加载https图片的完全解决方案
在项目当中出现加载https图片失败,但是将图片url直接复制到浏览器是可以正常访问的,如果你也是出现类似问题可以参考如下解决方案。首先出现这个问题基本上是由于https协议必须要有CA证书才可以访问,所以问题本质是进行网络访问过程中没有CA证书导致的,所以首先我们要做的是需要把图片https所对应的CA证书下载下来我在项目当中使用Glide的版本是implementation 'com.github.bumptech.glide:glide:4.11.0'annotationProcess原创 2021-09-22 15:28:33 · 4656 阅读 · 2 评论 -
Android Studio插件实现语言国际化
第一步:首先要先下载AndroidStudioPluginhttps://github.com/Airsaid/AndroidLocalizePlugin第二步:通过点击AndroidStudio菜单下Preference找到Plugin通过目录方式安装选择install plugin from Disk第三步:选中下载存放在硬盘当中的zip包安装完成后会在这里展示(安装后需重新一次AndroidStudio)第四步:重启完成后,右键选...原创 2021-09-03 17:40:21 · 796 阅读 · 0 评论 -
Android-隐藏app图标以及隐式启动
隐藏APP桌面图标<activity android:name=".LaunchActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <data android:host="LaunchActivity" android:scheme="com.tuobang.xsfx" tools:ignore="A原创 2021-08-31 17:40:11 · 1639 阅读 · 0 评论 -
Android 使用framework.jar或系统jar包依赖方式
第一步新建syslibs目录(可根据自己需求修改名称)在src同级目录,然后放入需要依赖的系统jar包,这样不放在libs目录下可以避免65535的方法数限制第二步在Project build.gradle目录下添加如下代码allprojects { repositories { google() jcenter() } //添加 其中app 根据你的module的名称进行替换, 后面的路径文件名都可以根据实际情况进行替换,但是原创 2021-06-30 11:24:25 · 1395 阅读 · 1 评论 -
Android事件分发机制
1 U型链产生条件,每层的的View和ViewGroup都不消费,每层的都会调用onTouch方法,也就是U型链 L型链产生条件 假如某层消费了,会调用各个层次的ViewGroup对应的dispatchTouchEvent 和消费的onTouchEvent ,我们称之为L型链2 Down事件 会遍历容器中的子View,判断哪个View需要接受事件 Move事件 不会发生遍历子View,走的是 TouchTarget 链表机制3 TouchTarget 链表机制 特别是...原创 2021-03-19 15:33:02 · 164 阅读 · 0 评论 -
Handler消息机制 高频面试题
1: Looper 死循环为什么不会导致应用卡死这个要说到Linux系统中的epoll机制,在MessageQueue轮询过程中有enqueue()方法中调用了nativeWake()方法,该方法就是调用了Linux底层的代码实现的epoll(event-poll)机制epoll机制:IO多路复用的一个实现;IO多路复用:在一个操作里同时监听多个输入输出源;2: MessageQueue优先级队列 是如何进行排序的优先级排序,就是依靠msg对象中提供的when参数,根据时间来进行排序;3:原创 2021-03-18 16:09:44 · 364 阅读 · 1 评论 -
Fragment+Viewpager实现懒加载和预加载
以下为懒加载中BaseFragment的写法,其他Fragment直接继承该BaseFragment即可,loadData()方法为实际加载数据的方法若想使用预加载,将lazyLoad()中的判断去除即可package com.maniu.mn_fragment_test.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Frag原创 2021-03-18 10:49:42 · 167 阅读 · 0 评论 -
JVM(Java虚拟机)和Android虚拟机的区别
虚拟机: JVM的作用是把平台无关的.class里面的字节码翻译成平台相关的机器码,来实现跨平台。Dalvik和Art(安卓5.0之后使用的虚拟机)就是安卓中使用的虚拟机。虚拟机是什么,Jvm,Dalvik(DVM)与Art三者之间的区别JVM和Android虚拟机的区别区别一:dvm执行的是.dex格式文件 jvm执行的是.class文件 android程序编译完之后生产.class文件,然后,dex工具会把 .class文件处理成 .dex文件,然后把资源文件和.dex文件等打包成原创 2021-02-02 16:54:14 · 1226 阅读 · 0 评论 -
android 热修复 组件化 插件化 核心解析
热修复实现原理步奏(插装式)1.将要修复的类全部打包成dex文件(在sdk中提供的工具进行打包)2.从服务器中进行整体管理,在应用中通过代码在应用层下载所有的dex文件3.使用类加载器和反射将dex的类进行遍历4.每次应用启动时,将类加载器将有bug的类进行替换(应用一旦退出就会失效,所以需要每次进行全部的替换)组件化实现原理(阿里ARouter路由)1.在gradle.preperties中设置所有需要的参数(如区分library或application的布尔值,)...原创 2021-02-01 14:48:05 · 178 阅读 · 1 评论 -
ArrayList LindedList HashMap等数据结构分析
ArrayList 的数据结构为顺序表,物理上连续,一旦增加元素,则所增加位置索引后面的元素全部进行后移操作,如果频繁增加数据则会极大的消耗性能LindedList的数据结构为链表,物理上不连续,每个元素是通过指向方式进行链接,增删的速度较快两者的对比图如下,两种数据结构皆有优点和缺点HashMap结合了两者的优点,数据结构为Hash表...原创 2021-01-15 16:31:03 · 255 阅读 · 1 评论 -
leakCanary源码全方位解析
最新版的leackCanary可以帮助我们主动进行初始化,原理是利用Android系统的加载过程由于Android源码在启动application之前会先去调用ContentProvider的onCreate方法,所以leackCanary就去声明了一个ContentProvider让他去完成初始化的操作,但是这种操作会导致极大消耗性能所以在框架中不推荐使用,leackCanary之所以这么做是因为他的依赖方式为debugImplemetation只在调试中进行依赖所以不会影响正式的打包leackC原创 2021-01-09 18:12:18 · 434 阅读 · 0 评论 -
glide源码全方位解析
1: RequestManager with = Glide.with(this); RequestBuilder<Drawable> load = with.load(url);load.into(iv);第一条 搞清楚这个请求发送到哪里去了,RequestTracker 两个队列 一个requests pendingRequests 请求过来之后,都是存入这两个队列;从Glide具有生命周期的特性开始推算:RequestManager在进行维护队列;问题:不知道...原创 2021-01-07 13:03:16 · 360 阅读 · 0 评论 -
App启动白屏优化 仿网易云音乐
<activity android:name="com.example.myapplication.SplashActivity" android:theme="@style/AppTheme.LauncherTheme2"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <catego.原创 2020-12-29 00:15:44 · 245 阅读 · 0 评论 -
traceview检测UI卡顿
1,traceview检测UI卡顿(Systrace查找问题,traceview,systrace)通过Androidstudio自带的traceview查看(Androidprofiler)2, ANR定位生成trace文件使用代码使用AndroidStudio使用DDMS1,1.使用代码生成trace文件Debug.startMet...原创 2019-10-09 17:24:11 · 195 阅读 · 1 评论 -
给Activity增加遮罩或阴影
// 显示背景的灰色遮罩private void showShadow() {WindowManager.LayoutParams windowLP = getWindow().getAttributes();windowLP.alpha = 0.7f; //透明度getWindow().setAttributes(windowLP);}// 隐藏背景的遮罩pri...原创 2019-07-31 15:01:30 · 795 阅读 · 0 评论