自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(335)
  • 资源 (14)
  • 问答 (1)
  • 收藏
  • 关注

原创 android--面试集锦

四大组件activity 获取栈内activity启动模式“singleTask” 在task里始终保持一份activity对象,且清楚当前activity的上面的对象。“singleInstance” 创建一个新的task,activity 在task里始终保持一份,该 Activity 始终是其任务中的唯一 Activity。自定义view性能优化启动优化布局优化内存泄漏缓存机制frameworkandroid消息机制socket http设计模式jni插件化开发

2021-03-17 15:02:50 387 1

原创 Android 上传aar文件到maven仓库 失败问题

之前使用的是maven插件,导致自己的sdk 引用其他远程aar库,找不到类。后期换成maven-publish就解决了。

2024-05-13 16:06:16 148

原创 android内存优化总结

1.fragment 在activity全局变量,被依赖无法真正调用onDestory了,但无法真正回收。3.播放器和textureView解绑,且设置为null或回收资源。4.fragment在栈里的个数,使用一个或者每次创建。2.fragment 内部类或者接口设置为null。

2024-03-04 16:46:13 240

原创 ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl‘ module is compiled with

answer:

2023-11-04 15:22:20 222

原创 MediaPlayer和TextureView的流程

2023-08-22 09:52:28 179

原创 Android 9.0 wifi 热点 汇总

最近调研需要开发Android 9.0的WiFi 热点,要求能够打开和关闭热点,及获取热点信息(名称和密码)。但是热点模块属于系统级api,第三方应用无法直接获取,还好app可以为系统级应用,可以直接获取api来执行,但是如果不是系统级应用,需要通过反射来处理。

2022-10-14 14:20:23 1777 4

原创 compileDebugKotlin FAILED Unresolved reference: xxxx

compileDebugKotlin FAILED Unresolved reference: xxxx

2022-06-02 16:18:20 633

原创 kotlin 多态和扩展

1. 多态当我们用一个子类继承一个父类的时候。这就是子类型。另一个熟悉的多肽是参数多态也就是泛型。此外,C++的运算符重载叫特色多肽。用子类型替换超类型实例的行为就是我们通常说的子类型多肽。参数多态就是泛型1.1 对第三方类进行扩展假使当对应的业务类A和B是第三方引入的,且不可被修改时。如果我们想要给他扩展一些方法。比如将对象转化为json。利用之前介绍的多胎技术就显得比较麻烦。fun ClassA.toJson():String{}kotlin支持扩展的语法。利用扩展,我们就能给当前类

2022-05-23 22:26:58 418

原创 关于Android shader 着色器

1.shader在绘图过程中,着色器是返回颜色水平范围的对象的基类。在paint中调用setShader(shader)方法设置一个shader的子类 , 之后任何对象(位图除外)使用该颜料绘制的颜色将从着色器中获取。/** * Shader is the base class for objects that return horizontal spans of colors * during drawing. A subclass of Shader is installed in a Pai

2022-05-17 15:11:18 682

原创 实现骨架shimmer 的加载效果

前几日要做一个加载的进度条样式,如图。gif的效果一般,再说明一下底色是蓝色,左到右边是渐变色,浅蓝到深蓝。在这基础之上,会有一个白色透明模块,不断划过蓝色区域,形成一种加载的动效。这种动画也叫骨架动效。facebook有个框架叫shimmer.大家github搜索。这里面涉及几个点:1.渐变的背景色这个效果简单,之前给view设置背景即可<com.lll.testshimmer.TestView android:layout_width="match_parent" an.

2022-05-17 11:52:20 326

原创 Kotlin泛型 总结

泛型:参数化类型,可以接收多种不同的类型,来达到代码的通用性。kotlin泛型和Java类似。优点:类型检查,能在编译时检查错误语义化,直观看到存在什么类型的数据自动类型转换代码的通用性class Box<T>(t: T) { var value = t}1.Java为什么不能声明一个泛型数组Apple[] appleArr =new Apple[10]Fruit[] fruitArray = appleArrfruitArray[0] = new Banan

2022-05-03 23:05:20 1694

原创 Kotlin 高阶函数和Lambda(总结)

Kotlin 函数都是头等的,这意味着它们可以存储在变量与数据结构中、作为参数传递给其他高阶函数以及从其他高阶函数返回。 /** * 方法内部定义局部方法 */ fun test1(){ fun testSub(value:Int):Int{ return value*3 } print("this is subMethod value=${testSub(4)}") }高阶函数是将函数用作参数

2022-05-03 17:37:20 1249

原创 AIDL beginBroadcast() called while already in a broadcast问题分析及源码解析

在写aidl 逻辑的时候遇到了beginBroadcast() called while already in a broadcast 意思是已经在广播中调用了源码: public int beginBroadcast() { synchronized (mCallbacks) { if (mBroadcastCount > 0) { throw new IllegalStateException(

2022-05-01 15:03:42 2284

原创 Unable to start service Intent { act=xx.xx.xx } U=0: not found

在执行AIDL 通信的时候,我们需要绑定service报错:Unable to start service Intent { act=xx.xx.xx } U=0: not found后使用intent.component解决 private fun startRemoteService() { Log.d(TAG, "---------------------------startRemoteService: ") val intent = Intent

2022-03-29 10:33:24 2463

原创 AIDL 总结

1.特点AIDL定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信。在 Android 中,一个进程通常无法访问另一个进程的内存。因此,为进行通信,进程需将其对象分解成可供操作系统理解的原语,并将其编组为可供您操作的对象。编写执行该编组操作的代码较为繁琐,因此 Android 会使用 AIDL 为您处理此问题。**注意:只有在不同应用的客户端通过 IPC 方式访问服务,且在服务中进行多线程处理时,才有必要使用 AIDL。如果您无需跨不同应用执行并发 IPC,则应通过

2022-03-24 10:08:40 2903

原创 Android 混淆总结

1.背景为了尽可能减小应用的大小,您应在发布 build 中启用缩减功能来移除不使用的代码和资源。启用缩减功能后,您还会受益于两项功能,一项是混淆处理功能,该功能会缩短应用的类和成员的名称;一项是优化功能,该功能会采用更积极的策略来进一步减小应用的大小当您使用 Android Gradle 插件 3.4.0 或更高版本构建项目时,该插件不再使用 ProGuard 执行编译时代码优化,而是与 R8 编译器协同工作,处理以下编译时任务:代码缩减(即摇树优化):从应用及其库依赖项中检测并安全地移除不使

2022-03-18 14:06:07 3776

原创 ERROR: commit 60acc70: missing Change-Id in message footer

我在合并多次commit的时候,不小心删除Change-Id,导致push失败remote: Processing changes: refs: 1 remote: Processing changes: refs: 1, done remote: ERROR: commit 60acc70: missing Change-Id in message footer remote: remote: Hint: to automatically ins

2022-02-23 09:44:43 479

原创 Kotlin 反射--笔记

1.类引用kotlin是基于java1.6设计,完全兼容java,所以和java很多功能都是互通的。如java反射中Class对象,在Kotlin叫KClass对象。1.1 Class和KClassClass//在kotlin中获取Class对象class ReflectDemo(val x: Int = 0) { constructor() : this(0) { } fun test() { println(x) }}//获取Cl

2022-02-17 17:24:59 1576

原创 kotlin 密封类

密封类用来表示受限的类继承结构:当一个值为有限几种的类型、而不能有任何其他类型时。说白了就是固定的类继承结构,类似于枚举enum,但是enum只能有一个类型的实例对象。enum class Day { MON, TEU, WED, THU, FRI, SAT, SUN}要声明一个密封类,需要在类名前面添加 sealed 修饰符。虽然密封类也可以有子类,但是所有子类都必须在与密封类自身相同的文件中声明。(在 Kotlin 1.1 之前, 该规则

2022-01-25 20:24:47 284

原创 registerForActivityResult 代替 startActivityForResult讲解

1.背景startActivityForResult用于在两个Activity 回调数据,已经被废弃了。 /** * {@inheritDoc} * * @deprecated use * {@link #registerForActivityResult(ActivityResultContract, ActivityResultCallback)} * passing in a {@link StartActivityForResult} ob

2022-01-25 16:32:02 4078

原创 The minCompileSdk (30) specified in a dependency‘s AAR metadata (META-INF/com/android/build/gradle/a

The minCompileSdk (30) specified in adependency’s AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)is greater than this module’s compileSdkVersion (android-28).Dependency: androidx.media:media:1.4.3.AAR metadata file: C:\Users\xx

2022-01-19 17:47:06 4332

原创 android 悬浮窗的检查

1、判断悬浮窗是否打开if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { val canDrawOverlays = Settings.canDrawOverlays(this) Log.d(TAG, "onCreate:canDrawOverlays=$canDrawOverlays ") findViewById<TextView>(R.id.status)

2022-01-11 19:10:05 5178 1

原创 windowsManager介绍

8. windowsManagerWindow是 一个抽象类,它的具体实现是PhoneWindow。创建一个Window是很简单的事,只需要通过WindowManager即可完成。WindowManager是外界访问Window的入口,Window的具体实现位于 WindowManagerService中,WindowManager和Window-ManagerService的交互是一个IPC过程。Android中所有的视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast,

2022-01-11 16:17:49 4234

原创 Android音频焦点

Android音频焦点两个或两个以上的 Android 应用可同时向同一输出流播放音频。系统会将所有音频流混合在一起。虽然这是一项出色的技术,但却会给用户带来很大的困扰。为了避免所有音乐应用同时播放,Android 引入了“音频焦点”的概念。 一次只能有一个应用获得音频焦点。当您的应用需要输出音频时,它需要请求获得音频焦点,获得焦点后,就可以播放声音了。不过,在您获得音频焦点后,您可能无法将其一直持有到播放完成。其他应用可以请求焦点,从而占有您持有的音频焦点。如果发生这种情况,您的应用应暂停播放或降低音

2022-01-10 15:18:00 3813

原创 kotlin 高阶函数 代替 接口回调

1 Java的接口回调在Java当中,使用接口回调的形式传递数据很常见,定义接口,声明接口,在A类中传入接口的实例对象,就可以接收传入的数据index.而在kotlin中,比较简单,传入一个函数即可Bpublic class B { IUpdateListener iUpdateListener; public void setiUpdateListener(IUpdateListener iUpdateListener) { this.iUpdateListene

2021-12-24 11:20:01 1994

原创 Android 自定义view 实现红点显示数量

开发当中,很多地方都需要红点气泡,红点内部显示数量思路:1.自定义view,先绘制一个圆形,在绘制一个text文本内容2.根据view的宽高,去最小值,因为圆形的特点,必须具备正方形区域才能绘制圆形,所以在宽高当中取最小值来绘制圆形3.内部的text,居中显示,文本的默认显示方法是基于文本的左下角为基点,所以为了让文本居中,要计算偏移量。4.如何进行偏移呢?先说X轴,只有知道了文本的宽度,向左偏移一半距离,就可以了同理,Y轴也是这样的逻辑,向下偏移一半距离,就可以居中了。val rect

2021-12-22 19:21:32 1938

原创 SpannableString使用

1.SpannableStringThis is the class for text whose content is immutable but to which markup objects can be attached and detached. For mutable text, see SpannableStringBuilder.一个内容不可变但可以添加和分离标记对象的文本的类。 对于可变文本,请参阅 SpannableStringBuilder。SpannableString是一个可

2021-12-21 19:45:06 134

原创 textview固定宽度,自动调整字体大小

fun setTextAutoSize(textView: TextView, text: String) { //设置textView固定宽度 val layoutParams = textView.layoutParams layoutParams.width = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 30f, .

2021-12-21 17:18:07 764

原创 Androidstudio 新建代码模板

1.新建类的模板#if(${PACKAGE_NAME}!="")package ${PACKAGE_NAME};#end/*** decription:* author:${USER}* time:${DATE} ${HOUR}:${MINUTE}*/public class ${NAME}{}2 新建方法

2021-12-14 16:53:01 218

原创 run、let、with、 apply 、also区别

相同点:都返回一个lambda表达式 run方法的高阶函数为block: T.() -> R let方法的高阶函数为block: (T) -> R,T作为参数传入,所以it代码T对象,也就是A对象。apply也类似于run,高阶函数的作用域为当前接收者对象作用域,高阶函数无返回值,但是方法为返回值,为接收者对象。, 但是let不同,是通过it关键字才能执行test1()方法,这是最大的不同,也是唯一的不同的地方。it代码A对象,高阶函数的返回值还是A对象,所以后缀还可以调用test1()

2021-12-13 13:52:19 1833

原创 Git 命令使用说明--note

git@常见字段说明1.origin和master远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样。 同时 “master” 是当你运行 git init 时默认的起始分支名字,原因仅仅是它的广泛使用, “origin” 是当你运行 git clone 时默认的远程仓库名字1 git 特点及目录结构Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方式Git 更像是把数据看作是对小型

2021-12-12 17:41:48 747

原创 kotlin中withContext和async区别

withContext1.用于执行耗时任务,会切换线程2.多个withContext()执行,为串行,运行在同一个线程3.直接返回结果4.withConext是个 suspend 函数val task1 = withContext(Dispatchers.IO) {...}val task2 = withContext(Dispatchers.IO) {...}执行完task1,才会执行task2.async await()1.执行耗时任务,会切换线程2.但是可以并行3.使用aw

2021-12-03 19:33:56 3725

原创 解决:androidstudio sdk build-Tools 更新不了

1.android SDK 更新不了sdkAll packages are not available for download!2.下载build-tools 失败Failed download to build_tools 28.0.3最近更新build-tools更新不了,终于在stackoverflow找到了解决方法。1.File–>setting–Appearance$Behavior–>System Settings2.选择 HTTP Proxy,auto-detect

2021-11-30 11:16:59 906

原创 Gradle权威指南-note2

9 Android gradle 高级自定义1. 使用共享库有一些库,像com.google.android.maps是独立的,并不会被系统自动连接,所以需要单独生成使用。<application> <uses-library android:name="com.google.android.maps" android:required="true"/> ...声明之后,安装apk的时候,系统会检测系统是否有我们的共享库,required = true ,如果没有,安装

2021-11-26 21:50:49 1850 1

原创 webview 和JS交互且传参

webview 和JS交互且传参1.native 给JS 传参1.1 mWebView.loadUrl这种形式没有返回值,调用js的gotoJS方法。另外还有重载方法loadUrl (String url, Map<String, String> additionalHttpHeaders),可以添加header数据。另外官方推荐使用兼容性更好的evaluateJavascript(String, ValueCallback).mWebView.loadUrl("javascrip

2021-11-25 11:46:43 4461

原创 使用JS 写个双色球

双色球:红色:1-33 选择6个蓝色:1-16 选择一个document.getElementById("timer_red").addEventListener("click", function() { index = 0; getRandomNumber(1, 33, "temp_red", "red_result"); }); document.getElementById("timer_blue").addEventListener("click", function() {

2021-11-24 15:23:21 1048

原创 Gradle-7.0.3 build.gradle字段有改变

如果你使用最新的 Gradle-7.0.3build.gradle文件里 defaultConfig 作用域内个别字段有变化。 defaultConfig { applicationId "com.example.myapplication" minSdk 21 //这里 targetSdk 31 //这里 versionCode 1 versionName "1.0" testInstrument

2021-11-14 16:54:37 896

原创 解决 kotlin 作为依赖库AAR的时候看不到源码

1.背景当kotlin语言编写的library的被其他App项目引用,在debug调试的时候,无法查看具体的代码逻辑。这时候就需要导入自己的源代码来进行调试。2.方案project—>右键—>library Properties…导入自己的源码即可。文件夹定位到main文件夹。...

2021-11-09 20:04:39 5003

原创 SSL peer shut down incorrectly

SSL peer shut down incorrectly一般需要翻墙获取,一般配置阿里云库project–>build.gradle文件里把阿里的服务放到前面// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { maven { url 'https://jitpac

2021-11-03 18:15:48 208

原创 adb 常用命令

1. adb 命令不可用配置adb的环境变量。adb_path = /sdk/platform-tools2. 常用命令* 开启服务adb start-server* 关闭服务adb kill-server列出设备及其idadb devices重启adb reboot* 随机测试adb shell monkey -p your.package.name 1000* script文件测试adb shell monkey -f /sdcard/xxx.script杀死应用

2021-11-02 22:36:26 543

launchstarter.zip

性能优化--启动器代码

2021-07-05

windows 下 Android手机屏幕共享软件

windows 下 Android手机屏幕共享软件,只支持windows平台,这是一个让手机屏幕映射到电脑的软件

2020-10-21

weixin-demo.zip

仿制摇一摇功能、动画、震动、音乐demo

2020-05-06

MigrationHelper.java

MigrationHelper.java

2020-02-24

MoreThread_BreakPoint.zip

实现了一个多实现了一个多线程断点下载得功能,同时带有进度条得功能。实现了一个多线程断点下载得功能,同时带有进度条得功能。线程断点下载得功能,同时带有进度条得功能。

2020-02-21

flutter_hybird.zip

flutter 和移动端结合通信的demo ,只有Android端的代码,大家可以参考。

2020-02-07

retrofit添加缓存demo.zip

演示retrofit demo 如何add self-cache intercerptor!

2019-11-06

QQPinyin_Setup_6.4.5804.400.exe

QQPinyin_Setup_6.4.5804.400.exe

2019-11-05

ffmpeg命令大全.docx

ffmpeg 文档命令

2019-11-05

ePUBw.COM - 30岁前,你还要多少成功的机会.mobi

30岁前,你还要多少成功的机会.mobi

2019-10-14

多线程下载文件

展示一个多线程下载代码的逻辑

2019-04-02

android ADT-22.6.2

android ADT-22.6.2最新版本,给大家分享。

2014-04-28

Android_GIS

附件是关于GIS的android 移动开发测试

2012-06-13

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

TA关注的人

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