自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Surface的跨进程绘制,如何绘制xml布局给Surface,全网独一份

工作中遇到了这样一个需求需要将一个自定义View或者自定义布局通过跨进程方式传递给另外一个进程来展示调研后决定跨进程通过aidl来实现,数据则通过Surface来传递,由于aidl仅支持基本数据类型或者实现了Parcelable接口的类,Surface满足以上条件,并且xml布局可以通过inflate方式转换为bitmap,并且xml的易用性和可控性更高,同时Surface可以渲染xml转为的Bitmap,故选择Surface作为数据传递方式

2024-04-15 11:49:20 926

原创 HTTP 状态码有哪些?分别表示什么?

500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求 503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。3xx:表示服务器要求客户端重定向 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)1xx:表示服务器已接收了客户端请求,客户端可继续发送请求。

2024-04-08 18:59:21 552

原创 用最便捷的方式查找到任意依赖库最新版本

查看依赖库版本的方式有很多,但是很多人还不知道这种最简便的方式,我们可以便捷的直接通过AndroidStudio直接查找到任意依赖库的最新版本

2024-01-09 22:13:28 500

原创 Android组件化实现、项目架构思想、组件化架构优化

首先我们需要理解,组件化是一种对完整Android项目模块进行分层的一种架构方式,如果了解过模块化的同学会发现,组件化和模块化的本质上并没有什么不同。废话不多说,接下来我们直接带着大家一起进行基本的组建化搭建,之后还会对架构进行整体优化。

2024-01-09 21:44:52 935

原创 productFlavors Android产品风味自定义、多渠道打包配置、应用瘦身

productFlavors Android产品风味自定义、多渠道打包配置、应用瘦身

2024-01-03 14:35:49 780

原创 android项目出现依赖冲突的多个解决方案

安卓项目出现依赖冲突的多种解决方案

2024-01-03 13:55:13 1081

原创 Android Gradle 插件版本和 Android Studio版本对应关系

Android Studio 构建系统基于 Gradle,而 Android Gradle 插件添加了几个特定于构建 Android 应用的功能。根据自己的AndroidStudio版本去下载对应的Android Gradle 插件。

2023-02-01 17:38:41 641

原创 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 4531 2

原创 Android Studio插件实现语言国际化

第一步:首先要先下载AndroidStudioPluginhttps://github.com/Airsaid/AndroidLocalizePlugin第二步:通过点击AndroidStudio菜单下Preference找到Plugin通过目录方式安装选择install plugin from Disk第三步:选中下载存放在硬盘当中的zip包安装完成后会在这里展示(安装后需重新一次AndroidStudio)第四步:重启完成后,右键选...

2021-09-03 17:40:21 766

原创 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 1623

原创 Android 使用framework.jar或系统jar包依赖方式

第一步新建syslibs目录(可根据自己需求修改名称)在src同级目录,然后放入需要依赖的系统jar包,这样不放在libs目录下可以避免65535的方法数限制第二步在Project build.gradle目录下添加如下代码allprojects { repositories { google() jcenter() } //添加 其中app 根据你的module的名称进行替换, 后面的路径文件名都可以根据实际情况进行替换,但是

2021-06-30 11:24:25 1367 1

原创 Dart语法笔记 Flutter开发

class Person{ String name; int age; // Dart语言中只能有单个构造方法,可以声明命名构造函数,并且没有重载和权限修饰符的概念 // Person(){ // // } Person(String name,int age){ this.name = name; this.age = age; } Person.myName(String name,int age){ this.name = name; .

2021-04-16 19:35:53 80

原创 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 161

原创 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 360 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 164

原创 Retrofit解析

okhttp的出现和发源最早,它是对于网络请求的较底层封装,它有一些相应的缺陷:

2021-03-05 17:08:15 162 1

原创 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 1200

原创 android 热修复 组件化 插件化 核心解析

热修复实现原理步奏(插装式)1.将要修复的类全部打包成dex文件(在sdk中提供的工具进行打包)2.从服务器中进行整体管理,在应用中通过代码在应用层下载所有的dex文件3.使用类加载器和反射将dex的类进行遍历4.每次应用启动时,将类加载器将有bug的类进行替换(应用一旦退出就会失效,所以需要每次进行全部的替换)组件化实现原理(阿里ARouter路由)1.在gradle.preperties中设置所有需要的参数(如区分library或application的布尔值,)...

2021-02-01 14:48:05 175 1

原创 ArrayList LindedList HashMap等数据结构分析

ArrayList 的数据结构为顺序表,物理上连续,一旦增加元素,则所增加位置索引后面的元素全部进行后移操作,如果频繁增加数据则会极大的消耗性能LindedList的数据结构为链表,物理上不连续,每个元素是通过指向方式进行链接,增删的速度较快两者的对比图如下,两种数据结构皆有优点和缺点HashMap结合了两者的优点,数据结构为Hash表...

2021-01-15 16:31:03 253 1

原创 leakCanary源码全方位解析

最新版的leackCanary可以帮助我们主动进行初始化,原理是利用Android系统的加载过程由于Android源码在启动application之前会先去调用ContentProvider的onCreate方法,所以leackCanary就去声明了一个ContentProvider让他去完成初始化的操作,但是这种操作会导致极大消耗性能所以在框架中不推荐使用,leackCanary之所以这么做是因为他的依赖方式为debugImplemetation只在调试中进行依赖所以不会影响正式的打包leackC

2021-01-09 18:12:18 427

原创 Android OOM(OutOfMemory)内存溢出和内存泄漏问题及解决方案

OOM(OutOfMemory)内存溢出OOM指申请的内存没有足够,导致出现OutOfMemory的一种现象、查看内容限制的方式如下,可以使用adb命令如下图OOM产生的几大因素内存泄漏长期的内存泄漏最终会导致OOM内存溢出常见的内存泄漏原因如下:1.单例模式传activityContext会造成内存泄漏,传applicaionContext可以避免造成内存泄漏2.非静态内部类创建静态实例会造成内存泄漏3.Handler使用延时方式调用会造成内存泄漏,可以..

2021-01-09 16:22:29 769

原创 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 359

原创 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 238

原创 Jetpack调研

Jetpack“全家福”定义:属于android开发组件工具集(只要是能够帮助开发者更好更方便的构建应用程序的组件,Google都将其纳入了Jetpack)特点:不依赖于任何android系统版本,这些组件大多数定义在androidX库之下,拥有非常好的向下兼容性目的:帮助我们编写更加简洁的代码,并简化我们的开发过程以上组件当中我们最需要关心的还是架构组件,架构组件对项目的影响最大也是使我们代码更加健壮的关键,架构组件也是Jetpack的核心组件。1.V...

2020-09-25 10:20:18 168

原创 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 188 1

原创 给Activity增加遮罩或阴影

// 显示背景的灰色遮罩private void showShadow() {WindowManager.LayoutParams windowLP = getWindow().getAttributes();windowLP.alpha = 0.7f; //透明度getWindow().setAttributes(windowLP);}// 隐藏背景的遮罩pri...

2019-07-31 15:01:30 784

原创 监听recyclerView的滚动条目位置

监听recyclerView滚动条目的位置1.通过addOnScrollListener添加监听,重新onScrollStateChanged方法2.当ReyclerView状态等于RecyclerView.SCROLL_STATE_IDLE时(一次滚动停止的时刻),通过LinearLayoutManager调用findFirstVisibleItemPosition()可知当前滚动到的条目位...

2019-07-24 16:36:53 4063

原创 android.support.v4.app.BaseFragmentActivityJB的解决方法

问题分析由于继承了基类AppCompatActivity 但是多个module版本不一致导致网上建议是依赖中的supportcompat、support等版本不对。对主项目内的相关依赖进行修改,无效考虑到所做的修改是项目中增加了继承自 FragmentActivity的类,也基本可确定肯定是版本问题亲测如果改为继承Activity可以解决报错,但是并没有解决根本亲测正确的解决方...

2019-07-16 18:03:19 1388

原创 实用的Android开发所需的链接

AndroidStudio编写so库的方法:https://www.52pojie.cn/forum.php?mod=viewthread&amp;tid=706568&amp;page=1&amp;authorid=619334超好用的破解及黑科技论坛:https://www.52pojie.cn/

2018-06-22 15:38:02 173

空空如也

空空如也

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

TA关注的人

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