自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 the file size exceeds the configured limit Android studio

方法一、打开Android studio安装目录下的bin/idea.properties,调高“idea.max.intellisense.filesize”方法二、在Android studio中点击“Help”->"Edit custom properties", 添加。此中方法的配置优先级高于方法一、即在这里配置了属性,idea.properties中对应的属性不会生效。

2024-02-19 16:53:32 511

原创 Class ‘com.xxxx.Log‘ was compiled with an incompatible version of Kotlin.

原因:在build.gradle中使用了1.5.30版本的kotlin插件,与第三方库中的kotlin插件版本不同,需要进行升级。

2023-08-22 21:04:16 526

原创 No variants found for ‘:app‘. Check build files to ensure at least one variant exists

原因:build.gradle中的com.android.application的版本与gradle-wrapper.properties中的版不一致,gradle-wrapper.properties的版本较高,而build.gradle中的版本较低。

2023-08-07 21:31:00 1142 1

原创 No original dex files found for dex location /xxx/xxx 问题解决方案

问题:基于qigsaw的api,在往Classloader中添加新的apk时(apk的位置位于内部存储 getFilesDir文件夹下),报出如下错误“No original dex files found for dex location”。原因:在将apk复制到getFilesDir()文件夹下的过程中,文件受损,导致classloader 不能正常识别出apk内的dex文件。针对较大的文件(28M),可以用下面方法下载,但是apk文件会受损,读取不出里面dex。2)、apk文件从网络中下载。

2022-12-15 10:25:36 825

原创 Java 不同接口中含有相同签名方法

这时可以看到,IDE会直接提示报错,在C类中,提示需要把String改成Int,以实现B的接口,但是改成Int后,又会提示要改成String,实现A的接口。这时我们可能会想再定义一个getString(): Int方法,来实现B接口,但是这是不行的,因为这2个方法签名相同,不能重复定义了。那么C类可以同时正确地实现这两个接口,因为getString方法签名相同,并且它们的返回值也相同。、接口A,B,有方法签名相同,但是返回值不同的方法,如下。...

2022-08-08 13:52:44 539

原创 java.util.zip.ZipException: attempt to write past end of STORED entry

private def saveJarEntry(JarOutputStream jarOutputStream, File saveFile, JarEntry jarEntry) { jarOutputStream.putNextEntry(jarEntry) def inputStream = new FileInputStream(saveFile) def buffer = new byte[8192] def readSi...

2022-04-06 14:35:43 2568

原创 Android 自定义注解处理器

之前我们可能用过dagger、hilt之类的注解,使用这些注解可以方便我们的工作,减少我们的代码编写量。因此,本文主要是介绍如何自定义一个注解处理器。可以分为2个部分,一、定义注解和注解处理器;二、注解使用演示。本文的目标:定义一个类构造方法上的注解DemoAnnotation,并使用此注解生成一个工厂类。注解的执行结果如下图所示一、注解和注解处理器 首先我们要新建一个”Java or Kotlin Library“组件项目 ,然后 对此子项...

2022-02-05 15:14:34 2003

原创 Android Gradle自定义插件

一、Gradle插件介绍Android Gradle插件中,包含了一些task可以帮我们做一些编译、引入依赖、打包等工作,比如assembleBuild,clean等等。二、Gradle编写1、新建一个Android Library,命名为demo-plugin,然后删掉之前的java文件夹,并创建一个Groovy文件夹,因为,我们是使用Groovy来编写Gradle 插件的。2、将子项目的build.gralde文件,修改为如下。因为...

2022-02-04 20:20:12 2301

原创 Caused by: org.gradle.api.GradleException: Cannot create a proxy class for abstract class 问题处理

Caused by: org.gradle.api.GradleException: Cannot create a proxy class for abstract class 'DownLoadPluginExtension'.(自定义的插件) at org.gradle.api.internal.AbstractClassGenerator.generateUnderLock(AbstractClassGenerator.java:107) at org.gradle.api.int...

2021-12-23 11:41:36 2809

原创 Android studio 设置代码格式化配置文件步骤

Preference->Editor->Code Style->Scheme右侧按钮->Import Scheme

2021-07-17 17:36:23 888 1

原创 Glide笔记----加载网络图片

Glide是一个图片加载框架,使用方法如下: 添加依赖: implementation "com.github.bumptech.glide:glide:$glide_version" annotationProcessor "com.github.bumptech.glide:compiler:$glide_version" Glide版本号参考Glide地址:https://github.com/bumptech/glide 使用方式如下:Glide.wi...

2021-07-13 20:32:17 2714 1

原创 Android LiveData笔记

LiveData特性: 1、只有在活跃状态(STARTED,RESUMED)才会收到通知,非活跃状态不会收到更新通知。 2、只有在数据发生变化时才发生更新,且只发送给处于活跃状态的观察者。 3、观察者在首次从非活跃状态变为活跃状态时,会收到更新通知。若第二次从非活跃状态转为活跃状态,则只在值变化时,才会收到通知。使用注意: 1、尽量放在ViewModel中,不放在Activity或Fragment中,原因:其一、避免Activity/Fragment冗余;其二、在...

2021-06-26 22:52:38 216 2

原创 Jetpack--生命周期Lifecycle笔记

Jetpack中的Lifecycle可以让我们感知Activity或Fragment生命周期的变化,进而可以让业务代码在组件的生命周期内执行。 Lifecycle用于存储有关组件(Activity或Fragment)的生命周期状态的信息,并允许其他对象观察此状态。Lifecycle允许其他对象观察查询当前状态(通过isAtLeast方法)。 LifecycleOwner是单一方法接口,表示类具有Lifecycle,它只有一个方法getLifecycle.LifecycleObserver可以...

2021-05-19 19:29:31 376

原创 OkHttp3笔记---CacheInterceptor

CacheInterceptor概览 CacheInterceptor的作用为将Http的请求结果放到到缓存中,以便在下次进行相同的Http请求时,直接从缓存中读取结果,避免进行耗时的Http请求。OkHttp3使用缓存的方式如下:val client:OkHttpClient by lazy { private var file = context.externalCacheDir OkHttpClient.Builder() //缓存大小为10M .

2021-05-07 22:19:09 239 2

转载 Flutter IconButton的padding调小无效

转载:Padding调小解决方案IconButton中padding的默认值是8.0const IconButton({ Key? key, this.iconSize = 24.0, this.visualDensity, this.padding = const EdgeInsets.all(8.0), this.alignment = Alignment.center, this.splashRadius, ......}调小的

2021-04-15 11:53:08 2113

原创 Android DataBinding双向绑定原理

Android中的双向绑定是指:将Model设置给View之后,当Model中的数据发生改变时,View显示的内容也会随之改变;当View发生变化时,Model中的数据也会随之改变。双向绑定可以让开发者使用数据驱动视图,并且降低了程序中的耦合度。双向绑定本质是基于观察者模式实现的。在代码层面,主要表现为:当Model中的数据发生变化时,通过回调接口,通知数据绑定器重新设置View中的数据;当View中的属性发生变化时,通过监听器捕获发生的变化,并将此变化传递给Model。这样就实现了双向绑定。整体框架如..

2021-04-10 16:35:44 2477 1

原创 Android DataBinding双向绑定相关注解

目录@InverseMethod@BindingAdapter@InverseBindingAdapter@BindingMethod@InverseBindingMethod@Bindable 在了解DataBinding相关注解前,可以看下这一篇文章“注解介绍”,了解一下什么是注解及注解怎么用。@InverseMethod 此注解用于方法上,作用为转换数据。用法如下: 新建一个Binding.kt文件,并写如以下代码:@InverseMethod("i...

2021-04-08 17:52:49 534

原创 Android DataBinding双向绑定使用

Android双向绑定的好处就不再介绍了,直接上使用方法的代码。以下展示Demo1-3,使用方式从简到繁。双向绑定简单使用Demo1: 我们使用ObservableField与EditView展示双向绑定。使用方式如下,将此ObservableField与一个EditView进行绑定(使用@={}),当视图EditView发生文字变化时,ObservableField中数据也会随着变化。ObservableField中的数据发生变化,也会造成EditView的文字变化。因为Observable...

2021-04-08 11:11:45 553 1

原创 Picasso原理笔记

Picasso是Github上的一款很受欢迎的图片加载框架,它可以从网络、assert、本地文件等资源处加载图片,并提供了图片缓存功能。 Picasso加载图片的过程大致如下: 1、构建图片加载任务; 1.1、获取Picasso单实例。在调用Picasso的get方法时会获取一个Picasso单实例。 1.2 、构建图片加载任务。在调用Picasso的load(url)方法时,会构建一个RequestCreater,以接收对图片进行的各种处理,并以此构建一个图片加载请求(...

2021-04-03 11:04:13 214

原创 RecyclerView嵌套造成的滑动冲突解决方法

背景:2个同向滑动的RecyclerView相互嵌套,进行滑动时发生滑动冲突。例如,Viewpager2内部包含了另一个ViewPager2或一个横向滑动的recyclerView。这时,在横向滑动时,可能滑动的是外部ViewPager2,也可能是内部的RecyclerView。滑动冲突的原因:外部ViewPager2和内部RecyclerView的滑动阈值不同造成滑动冲突。ViewPager2的滑动阈值较高,内部RecyclerView的滑动阈值较低。具体来说,在触摸事件分发时,ViewGroup会先

2021-03-16 14:42:53 3222

原创 OkHttp3笔记----CallServerInterceptor

在上一篇ConnectInterceptor,介绍了Http的连接过程。本篇将介绍Http如何发送和接收数据,在OkHttp中,CallServerInterceptor用来发送和接收数据。接下来以Http2.0,介绍数据发送接收的大体过程,在Http2.0协议中,数据会被封装成数据帧进行发送。CallServerInterceptor概览: Http2Connection:表示了一个Http连接,包含了Http2Writer,其负责将数据帧发送给服务器,Http2Reader其负责接...

2021-03-03 23:32:03 473 1

原创 OkHttp3笔记---ConnectInterceptor

ConnectInterceptor的作用为建立客户端和服务端的Http连接,其中连接(RealConnection)是可以复用的(针对Http2.0协议)。获取Http连接的过程如下:首先,检查当前的RealCall是否含有可用的Http连接,若包含,则返回可以的连接。否则,检查连接池是否含有可用的连接,若有,则返回。若依然找不到可用的连接,则建立一个新的Http连接,并将其保存到连接池中。...

2021-03-03 11:41:27 351

原创 OkHttp3笔记---TaskRunner

TaskRunner为OkHttp中的网络通信创建线程,它使用一个线程池,创建线程用以处理OkHttp交付的网络通信任务。一、TaskRunner概览 BackEnd:网络任务的处理器,用于处理网络任务。它包含了一个线程池,此线程池的核心线程数量为0,最大线程数量为Integer.MAX_VALUE,任务队列为一个容量为0的阻塞队列。 Task:网络任务 TaskQueue:是一个任务队列,包含了多个网络任务,对网络任务进行管理 readyQueues:就...

2021-03-02 18:40:16 1066

原创 Flutter安装笔记

1、参考Flutter中文网1、1 从Github拉取flutter代码这里要拉起stable分支的代码,若拉取master分支,在执行flutter doctor时可能会报错1、2 配置flutter环境变量(参考Flutter中文网)要在终端运行 flutter 命令, 你需要添加以下环境变量到系统PATH:转到 “控制面板>用户帐户>用户帐户>更改我的环境变量”在“用户变量”下检查是否有名为“Path”的条目:如果该条目存在, 追加 flutter\bin的全路径,

2021-02-24 12:33:16 92

原创 DiskLruCache用法及原理随笔

DiskLruCache介绍DiskLruCache是一个管理硬盘内容的存储管理工具,它采用了最近最少使用(LRU)算法,以对硬盘中存储的文件进行管理,在存储空间短缺的情况下,会优先将最近最少使用的文件删除,以扩展可用的硬盘空间。DiskLruCache架构图如下:DiskLruCache主要由如下几个部分组成:1、LRU链表lruEntries,它是一个LinkedHashMap类型的对象,而LinkedHashMap是一个LRU算法的实现类,DiskLruCache就是基于此类来管理硬盘中的文

2020-12-19 13:36:36 1368 1

原创 Could not resolve all artifacts for configuration ':classpath'.

出现的问题Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all artifacts for configuration ‘:classpath’.解决方法这句话的意思可能是不能找到classPath所指定的资源,这是我们需要对repositories进行修改。我在将dependencies修改

2020-05-09 10:38:02 3675

原创 Android scrollTo滑动原理分析

在这里先说一下结论,我们调用scrollTo使View内容发生移动的原因是:view的画布发生了移动;即scrollTo的调用最终会调用:canvas.translate(-mScrollX, -mScrollY)这也同时解释了为什么我们对scrollTo方法传入正值,view的内容却往左/上移动。我们先来看一下scrollTo方法:public void scrollTo(i...

2020-03-13 23:10:07 599

原创 C++中调用Java方法

背景:需要在Qt中进行Java方法的调用,就查看了一下c++如何调用Java方法,在此记录。本文主要参考:https://www.cnblogs.com/andyliu1988/p/6041542.htmlhttps://blog.csdn.net/wjakl001/article/details/80091810https://docs.oracle.com/javase/1.5.0...

2020-01-06 15:45:58 858

原创 Java try{}finally{}执行规范

finally语句总是要执行的!1)、try与finally里面都有return语句;这种情况忽略try中的return语句,所以最终返回的是finally语句中的返回结果例如:public class Start { public static void main(String[] args) { // TODO Auto-generated method stub Sy...

2019-09-05 21:12:08 1236 1

原创 hadoop安装过程中遇到的问题

报错:Call From ubuntu/127.0.0.1 to ubuntu:42912 failed on connection exception ........在namenode,datanode等节点成功启动的情况下,这是由于hostname配置不对,导致datanode无法连接namenode 。所以应该将master/slave1.......等节点/etc/hostna...

2019-06-05 11:45:37 242

原创 目标追踪------HOG特征和KL散度

实验目的:进行目标追踪实验过程:1、使用HOG特征来表示要追踪的目标2、根据目标在上一帧中的位置,来选定当前帧的可能位置,已此位置为圆心,step为半径获取一系列的候选目标。利用目标的移动历史数据推测出目标的移动方向,然后再推测树圆心。3、用HOG特征表示候选目标。计算候选目标与追踪目标的相似度。相似度的计算使用KL散度4、得到当前帧中追踪目标的位置,更新数据5、重复2-4...

2019-05-11 21:26:24 745 2

原创 条件语句中使用&&或||时的判断顺序

在条件语句(java/c)中,使用‘&&’时,若第一项为false,则判别为false,若为true,则判断下一项。‘||’原则与‘&&’相同‘&&’代码说明:public static void main(String[] args) { // TODO Auto-generated method stub int i=2;...

2019-04-14 20:56:13 7631

原创 findViewById结果为null

背景:     自定义了一个View,运行时可以显示出来,但是在Activity中调用findViewById的结果却为null。定义View代码:class BView (context: Context?) : View(context) { constructor(context:Context?,attr: AttributeSet?):this(context){ ...

2019-02-19 08:39:27 301

原创 ubuntu修改bashrc后不能打开终端

记录:  在bashrc中添加LC_ALL=C(去除所有本地化),后不能打开终端,去除后才能打开terminal 

2018-12-19 22:25:37 1122

原创 android点击事件原理分析(一)

写在前面  最近需要回放一些点击事件,但是时不时会回放失败(很尴尬的Bug),所以去看了一下点击事件的传递流程,这一篇文章主要讲一下点击事件是如何在ViewGroup中传递的。这是一个对理解点击事件传递很有帮助的文章,关于MotionEvent的。   从网上查找资料,可以得知,点击事件TouchEvent会经过一系列的传递,传到ViewGroup中的dispatchTouchEv...

2018-12-02 20:55:18 1789

原创 System UI has stoped

问题分析:可能会有不同bug导致这个问题,需要在打印出的错误日志中查看是什么问题;我的是:解决方案:经查看是以下造成的:setSmallIcon(R.mipmap.ic_launcher)改为setSmallIcon(R.drawable.ic_launcher_background) ...

2018-10-16 09:42:02 780

原创 android studio安装完后,打开提示failed to load jvm dll

问题分析:之前安装了jdk10,并且配置好了环境,可以通过cmd命令行查看版本,但打开Android studio时提示不能加载JVM,可能原因,版本兼容。解决:卸载jdk10,安装jdk1.8。再次打开Android studio时可以正常显示。...

2018-10-13 11:16:22 6676 1

原创 Root Android 模拟器

Root有两种形式,一种是临时性的,即重新启动后,root会失效;另一种是永久性的,重启后也不会失效。一 、临时性Root  首先配置好adb与emulator的环境,这样方便我们使用。su文件:https://pan.baidu.com/s/1lz5AlJn90ag5-Hp4XRZ-IQre文件管理Apk:https://pan.baidu.com/s/1MQPuBL-_W97n...

2018-10-03 21:42:17 997

空空如也

空空如也

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

TA关注的人

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