自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 主题配置,我们通常在style中设置的主题有什么用呢

@ (这里写自定义目录标题)你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ct

2023-04-28 00:55:32 102

原创 内存优化一

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-05-20 23:53:27 501

原创 Android模块化架构下,子模块自加载方案

Android模块化架构下,子模块自加载方案!背景在 Android 模块化架构中后,子Module 间相互解耦,作为独立的模块运行。如果 子Module 也需要进初始化的操作,那么该如何做呢?可能你会说,直接在 壳App Application的onCreate函数进行初始化就可以了,但这样会带来一些新的问题:我们并不需要 壳App 去关注模块内部的业务,所以每个模块的初始化应该由自身管理;并不是所有子模块的初始化,都需要在 Application onCreate() 时去进行加载,这样会极大

2021-12-15 18:35:28 2047

转载 AMS在Android起到什么作用,简单的分析下Android的源码

AMS在Android起到什么作用,简单的分析下Android的源码面试官: AMS在Android起到什么作用,简单的分析下Android的源码心理分析:这道题在发生在大多数场景下。面对这道题 很多求职很茫然,不知道该如何说起。AMS本身比较复杂难以理解。工作多年也很难弄清AMS的作用,其实我们大可从以下几点入手组件启动、进程切换、Crash异常入手求职者:AMS难以表述 我们就从最熟知 的Activity启动入手,逐步深入和分析,用定力告诉面试官,我层深入研究过。接下来我们从五条线分析AMS作

2021-12-15 18:27:24 3714

转载 【转载】腾讯面试题——谈一谈Binder的原理和实现一次拷贝的流程

面试 面试官 谈一谈Binder的原理和实现一次拷贝的流程 心理分析 能问出该问题,面试官对binder的理解是非常深入的。想问求职者对Android底层有没有深入理解 求职者 应该从linux进程通信原理的两次拷贝说起,然后引申为什么binde...

2021-07-14 17:23:47 303

原创 vivo安卓面试题

问题 1. synchronize在jvm层面 线程如何保证同步, 这个标识位是怎么用的问题 2. jvm层面线程同步有哪些api和指令问题 3. ClassLoader如何保证线程安全问题 4. 帧率监控用的哪个api, 这个api我答上来了 Choreographer.postFrameCallback问题 5. Choreographer.postFrameCallback这个API你用的哪些框架有用到这个API问题 6. onVsync会回调哪些数据上来...

2021-07-05 08:34:42 507

原创 字节跳动安卓面试题

一面1.插件化,启动Activity的hook方式,taskAffity2.okHttp支持http2,http2的功能有哪些?tcp方面拥塞控制?tsl握手和具体的非对称加密算法。非对称名称3.handler的post是如何实现的。callback,runnable,msg的执行优先级。阻塞是怎么实现的,为什么不阻塞主线程。4.求二叉树两个节点之间的最大距离5.206含义,未修改资源是哪个,302含义,301含义6.多进程通信问题,binder优势,aidl生成的java类细节,多进程遇到哪些

2021-07-02 08:42:09 484

原创 八皇后问题java解法

八皇后问题八皇后问题是:在八行八列的格子上放8个皇后(棋子),使得任意两个皇后都攻击不到对方,即使得他们都不在同一行同一列和同一斜线上。 int[] result ;//最终的结果数组 int queenNum;// 皇后的数量,N皇后 int k = 0; public void static main(String[] args) { queenNum = 8; result = new int[queenNum]; q

2021-07-01 15:26:13 710

原创 HashMap

HashMapLoadFactor负载因子,默认为0.75threshold所能容纳键值对的临界值,计算公式为数组长度*负载因子sizehashMap中实际的键值对数量modCount用来记录hashmap内部结构发生变化的次数hashMap的默认容量INITIAL_CAPACITY为16TREEIFY_THRESHOLD树化阈值(超过8之后,链表升级为树)UNTREEIFY_THRESHOLD存储结构HashMap采用了数组+链表+红黑树的存储结构数组部分称为哈希桶,当链表长

2021-06-29 17:38:25 260 1

原创 反射与注解

元注解负责注解其他注解(target )@Target(value = {ElementType.METHOD,ElementType.TYPE})//runtime>class>source@Retention(value = RetentionPolicy.RUNTIME)//表示是否生成在JAVAdoc中@Documented()//字类可以继承父类的注解@Inherited@interface MyAnnotation{}自定义注解@interface MyA

2021-06-17 17:30:06 109

转载 kotlin(七). 内联函数

一. 内联函数使用高阶函数会带来一些运行时的效率损失:每个函数都是一个对象,并且会捕获一个闭包。即那些在函数体内会访问到的变量。内存分配和虚拟调用(对于函数和类)会引入运行时间开销,但是通过内联化表达式可以消除这类的开销为了解决这个问题,可以使用内联函数,用inline修饰的函数就是内联函数,inline修饰符影响函数本身和传给它的lambda表达式,所有这些都将内联到调用处,即编译器会把调用这个函数的地方,用这个函数的方法体进行替换,而不是创建一个函数对象并生成一个引用kotlin代码 te

2021-05-08 17:33:39 563

原创 kotlin(六)--匿名函数

匿名函数匿名函数和普通函数没有什么区别,只是没有名字而已如果是单表达式的函数体,可以用赋值运算符代替大括号,而且可以省略返回值类型,编译器可以推断是否有返回值,如果有类型是什么类型。这个其实和匿名函数没有关系,普通函数也能用如果编译器可以推断出匿名函数的形参类型,可以将形参类型省略匿名函数是可以作为函数参数的,在实际使用中函数的参数类型是lambda函数类型,可是穿个匿名函数是没问题的,这也能说明lambda的底层实现是匿名函数,比如filter方法//普通函数fun add(x

2021-05-06 14:06:46 904 1

转载 INSTALL_FAILED_NO_MATCHING_ABIS 解决方案

引用 https://blog.csdn.net/geekqian/article/details/79032655在 app 的 moudle 的 build.gradle 文件中, 粘贴一下代码, 注意是添加在 android {} 大括号中.// 解决 native libraries 不支持cpu的体系结构。允许模拟器调试splits {abi {enable truereset()include ‘x86’, ‘armeabi-v7a’,‘x86_64’universalApk t

2021-04-30 10:09:28 291

转载 转:the apk for your currently selected variant(app-release-unsigned.apk)is not signed. Please specit

原因使用 release 配置来编译项目时,没有设置好签名信息解决方法1.将 build variant 设置为 release 模式2.打开Android Studio的 Project Structure 面板,右键单击左侧导航栏中的app,打开模块设置3.选择 Signing 选项卡。添加一个签名配置设置你的key并填写好相应信息4.切换到 Build Types 选项卡,设置签名配置...

2021-04-30 10:08:04 381

原创 kotlin(五)类与函数

文章目录类声明构造函数函数声明调用超类实现幕后字段幕后属性接口类声明使用关键字class声明类声明 = 类名+类头(指定其类型参数,主构造函数等)[可选]+花括号包裹的类体[可选]构造函数一个主构造函数:类头的一部分,跟在类名后面多个次构造函数:类体的一部分属一般函数class Test constructor(var name:String){ init{ println("name:$name") }}类如果有一个主构造函数,则每个次构造函数,必须委托给主构造函数

2021-04-29 11:20:57 199

原创 kotlin基础(四)----扩展

文章目录扩展函数扩展伴生对象为伴生对象扩展成员扩展函数扩展扩展函数可以在原有类添加新的方法,不会对原类进行修改,扩展函数定义形式:fun recieverType.functionName(params){ body}recieverType 表示扩展的是哪个类functionName 表示扩展的函数名params 表示参数// 示例class Apple(var type:String)fun Apple.play(){ println("型号$typ

2021-04-27 17:17:15 138

原创 kotlin基础(三)----表达式

条件控制if表达式// 作为表达式val max = if (a > b) a else b我们也可以把if表达式的结果赋值给一个变量 var min = if(b<c){ println(b) b }else{ println(c) c }​ 这也说明我们不需要像java那样拥有一个三元运算符,因为我们可以使用它来简单实现var c = if(condition) a else b​​ 使用区间if(num in 1..8){

2021-04-15 16:18:24 218

原创 kotlin基础(二)----数据类型

基本数据类型​ kotlin的基本数值类型包括:Byte Short Int Long Float Double类型长度Byte8Short16Int32Long64Float32Double64子符不属于基本数值类型,是一个独立的数值类型比较两个数字​ kotlin没有基础数据类型,只有封装的数字类型,你每定义的一个变量,其实kotlin帮你封装了一个对象,这样可以保证不出现空指针。数字类型也一样,所以在比较两个数字的时候,就有比

2021-04-15 10:57:54 171

原创 kotlin基础(一)

函数定义函数定义使用关键字fun参数格式 参数:类型fun sum(a: Int, b: Int): Int { // Int 参数,返回值 Int return a + b}如果是表达式作为函数体,返回类型自动推断 如果是public方法,则必须写返回类型fun sum(a: Int, b: Int) = a + bpublic fun sum(a: Int, b: Int): Int = a + b // public 方法则必须明确写出返回类型

2021-04-15 09:17:04 122

转载 Android多模块混淆、多module混淆、多library混淆的正确姿势

Android Studio本身集成了ProGuard混淆工具,我们可以通过编辑build.gradle文件来开启混淆并且对代码进行压缩,对资源进行优化等。如下图下面是代码,可以直接复制buildTypes { release { minifyEnabled true //开启混淆 zipAlignEnabled true //压缩优化 shrinkResources true //移出无用资源 proguardFiles

2021-04-14 14:17:48 535

原创 Unable to add window -- token null is not valid; is your activity running?

Dialog dialog = new Dialog(context); 这里的context必须传入activity,如果传入application则会报错没有应用token 应用的token一般只有Activity拥有,所以这里只需要用Activity作为Context来显示对话框即可 如果需要传入application,则需要:设置dialog为系统dialog dialog.getWindow().setType(LayoutParams. TYPE_SYST.

2021-03-26 09:56:05 839

原创 安卓api与安卓版本对应表

30Android 10.0+ (R)29Android 10.0 (Q)28Android 9.0 (Pie)27Android 8.1 (Oreo)26Android 8.0 (Oreo)25Android 7.1.1 (Nougat)24Android 7.0 (Nougat)23Android 6.0 (MarshMallow)22Android 5.1 (Lollipop)21Android 5.0 (Lollipop)19Android 4.4 (Kitk

2021-03-19 16:54:44 818

原创 安卓应用图标

一般安卓市场需要图标尺寸1616,4848,512512,圆角,Android开发需要4848,7272,9696,144144,196196,因此PS的时候,只需要做个最大尺寸512*512,然后缩小即可

2017-03-15 10:05:21 323

空空如也

空空如也

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

TA关注的人

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