自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 资源 (9)
  • 收藏
  • 关注

原创 Android 14 应用适配指南

在Android 14,app可以在系统分享表中自定义行为。在分享表中,可借助ChooserAction.Builder来构建自定义ChooserAction,指定ChooserActions的列表作为使用Intent.createChooser创建的Intent的Intent.EXTRA_CHOOSER_CCUSTOM_ACTIONS。以下是创建自定义行为的一般过程以发送多张图片为例//创建Intent//各种类型的图像//添加自定义行为的intentmContext,1,

2023-12-15 16:16:21 1742

原创 Windows文件后缀名批量修改方法教程

怎么修改文件后缀名格式 文件后缀名批量修改方法教程

2023-12-05 14:28:38 2789

原创 android混淆编译-proguard通用混淆配置文件编写

【代码】android混淆编译-proguard通用混淆配置文件编写。

2023-12-04 16:22:55 395

原创 Android 透明度颜色值对照表

比如:50%透明度, 50%也就是256的一半即128,因为是从0开始算的,所以是 127,转换成16进制就是 7F。Android中的颜色值通常遵循RGB/ARGB标准,使用时通常以“#”字符开头,以16进制表示。透明度分为256个等级,即 0~255,00表示完全透明,FF开始表示完全不透明。Android中的颜色值一般格式是:#AARRGGBB。也可以通过设置字体颜色,或者设置背景色来达到预期效果。我们的UI小姐姐就喜欢给。注:00是完全透明,FF就是完全不透明。,这个需要自己判断一下。

2023-12-04 12:01:16 1449

原创 解决github无法访问的办法

(或其它地方自己能找到的地方)

2023-11-25 17:16:24 227

原创 Android 打包aar包含第三方aar 解决方案

因项目需要,打包aar包含第三方aar,如果直接对module进行打包会产生一些问题。错误信息说的很清楚构建aar不支持本地aar文件依赖fat-aar 能将依赖项合并并嵌入到生成的aar文件中。由于fat-aar不再维护,使用起来有诸多需要修改的地方,而不支持高版本的gradle,极其坑爹,踩坑后找到替代方案,支持高版本的gradle无需修改脚本文件。

2023-11-24 15:03:37 1126 2

原创 android中的Package安装、卸载、更新替换流程

android系统在安装,删除,替换,清除数据等与应用相关的动作时,会发出对应的Broadcast,上层的应用通过注册相应的广播事件来做相应的处理。1,ACTION_PACKAGE_ADDED----------当有新的包安装成功的时候,系统会发出此广播。2,ACTION_PACKAGE_REMOVED-----当有包被卸载的时候,系统会发出此广播。3,ACTION_PACKAGE_REPLACED----当有包被更新的时候,系统会发出此广播。上面两种广播的用法,很多朋友也已经很熟悉,通过。

2023-10-31 16:37:08 726

原创 Android Studio Gradle中没有Task任务,没有Assemble任务,不能方便导出aar包

可以通过设置File->setting -->Experimental→取消勾选“Do not build Gradle task list during Gradle sync"Sync完成后,在Gradle里就有Tasks了,这样通过Assemble就能快速的编译aar release包了。1. 在编译aar包或者编译module的时候,没有release包,我们一般都是通过assemble进行编译。②然后通过File→Sync Project with Gradle Files。

2023-10-23 11:41:10 1518

原创 DecimalFormat 多语言、本地化指定Locale

DecimalFormat再未指定Locale会使用默认的Locale,不同的Locale会导致格式化时出现出乎预期的现象。如Locale为西班牙时,小数点符号为",“千位分隔符为”."。所以在多语言或者需要本地化的情况下,使用DecimalFormat最好指定Locale避免格式化出现异常。

2023-10-09 14:58:00 167

原创 异常解决:android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow

问题如何引起:解析出音乐专辑图片时,需要把图片转byte数组存入数据库,当下次查询数据库该专辑数据时报上面错误,行太大而无法写入CursorWindow(CursorWindow默认的最大值为2MB)第二个参数cursorWindowSize设置大小, 这里修改CursorWindow的大小为5M。图片入库数据库时,先对图片进行压缩处理,尽量控制其大小在2M内。设置一下CursorWindow的大小即可。

2023-09-18 19:52:57 1435

原创 Android13适配-Google官方照片视频选择器

照片选择器提供了一个直观的界面,便于与您的应用分享照片。照片选择器的界面可供浏览和搜索,并按日期降序向用户显示其媒体库中的文件。如中所示,照片选择器为用户提供了一种安全的内置授权方式,让用户可以仅向应用授予对所选图片和视频的访问权限,而不是对整个媒体库的访问权限。该工具会自动更新,让应用用户能够长期使用扩展的功能,而无需更改任何代码。

2023-09-13 18:16:45 1434 1

原创 Android13-图片视频选择器

在compileSDK = 33 时,谷歌在安卓新增了 图片选择器 功能,支持单选、多选、选图片、视频等操作,并且不需要额外获取照片/音频权限。

2023-09-12 17:54:53 832

原创 java内存中有哪些内存空间:栈空间,堆空间,和方法区介绍

位于“=”前的p1是一个在main()方法中定义的变量,可见,它是一个局部变量,因此,它被会添加到了执行main()方法的主线程的JAVA方法调用栈中。接着,Java虚拟机定位到方法区中Test类的Main()方法的字节码,开始执行它的指令。中的Person实例,再根据Person实例持有的引用,定位到方法去中SPerson类的类型信息,从而获得print()方法的字节码,接着执行print()方法包含的指令。的引用,实际上指的是Person类的类型信息在方法区中的内存地址,其实,就是有点类似于C 语。

2023-08-31 15:29:53 214

原创 RecyclerView数组越界异常java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position

在进行数据移除和数据增加时,务必要保证Adapter中的数据和移除的数据保持一致!就是如果你更新你的集合后,调用Adapter的新出现的notifyxxxx方法时,adapter 的更新预期结果和实际集合更新结果不同,那么就会出现异常了。数据一致其实说的是要保证数量一致。就是说Adapter有个size,你的集合有个size。反复插拔U盘触发音频自动扫描,导致可能集合list的size变了,但未及时通知Adapter刷新数据就出错了。1).方案一:将集合list和adapter的list隔开。

2023-08-01 17:34:28 515

原创 MediaPlayer: android 利用mediaplayer播放音频停止后出现mediaplayer went away with unhandled event

项目场景:每次播放下一曲时会先release当前的,再播放下一曲,也会概率出现上面的错误,当出现此错误后,导致播放器不能正常播放下一曲,会回调onCompletion()方法。如题,在onDestory中停止MediaPlayer后概率会上述错误。出现这种状况时需要在release前先reset一下。

2023-07-25 11:07:15 540

原创 RecyclerView 一次性加载大量数据时(2000条音频数据),导致UI线程卡顿,频繁GC的问题

公司项目有这么一个需求,扫描sdCard或U盘的音频数据,并分类展示出来,当数据量比较大时(2000多条数据以上),显示列表慢和滑动列表会很卡。

2023-07-24 14:05:59 953

原创 SurfaceView出现ANR:Surface has already been released的解决办法

项目中有这样一种场景会引起SurfaceView出现ANR,在主Activity中创建并使用SurfaceView,然后不停的进入子ActivityB ,返回主Activity再进入子ActivityB这样循环,就会出现ANR的问题。产生ANR的原因:简而言之,处于在lockCanvas和unlockCanvasAndPost之间时,SurfaceView销毁了,导致unlock失败,出现了死锁。第四步:SurfaceView重新创建,尝试lock,因为上次的锁没有释放,所以进入了无限等待。

2023-04-27 14:43:56 2295 2

原创 Glide图片加载框架是如何确定图片加载的生命周期

其实这是最简单的一种情况,FragmentActivity、v4 包下的Fragment、还是app 包下的Fragment,最终的流程都是一样的,和Activity 是同步的,如果Activity 被销毁了,Fragment 是可以监听到的,这样Glide 就可以。实现,没什么需要解释的。可以看到,with()方法的重载种类非常多,既可以传入Activity,也可以传入Fragment 或者。with()方法是Glide 类中的一组静态方法,它有好几个方法重载,我们来看一下Glide 类中所。

2023-04-24 09:56:40 535 1

原创 解决Android 应用targetSdkVersion小于24(Android N)运行在高版本设备无法全屏的BUG

进行公司车机设备开发时,由于屏幕比例比较特殊(1920x720),导致部分应用显示时左侧和底部有很大的黑边,使用dumpsys分析黑边的View,移除后发现仍存在,后确定为低版本默认比例问题,耗费了几个小时,记录下这个问题。

2023-04-14 10:48:22 940

原创 bitmap的六种压缩方式,Android图片压缩

以上就是5种图片压缩的方法,这里需要强调,他们的压缩仅仅只是对android中的bitmap来说的。如果将这些压缩后的bitmap另存为sd中,他们的内存大小并不一样。android手机中,图片的所占的内存大小和很多因素相关,计算起来也很麻烦。为了计算出一个图片的内存大小,可以将图片当做一个文件来间接计算,用如下的方法:123或者try {try {123456789101112正在上传…重新上传取消上面两个方法计算的结果是一样的。

2023-03-29 15:15:52 2083

原创 安卓Activity Dialog和Toast 的Window 创建过程

的handleResumeActivity 方法中,首先会调用Activity 的onResume 方法,在ActivityThread。Activity 的attach 方法里,系统会创建所属的Window 对象并设置回调接口,PolicyManager 的makeNewWindow 方法完成的,创建后的对象实际就是。Toast 内部的视图由两种方式,一种是系统默认的样式,另一种是setView 指。在Activity 的创建过程中,最终会由ActivityThread 的。Toast 里的TN 接口。

2023-03-24 09:39:28 400

原创 使用RecyclerView实现旋转3D画廊效果

RecyclerView是google官方在support.v7中提供的一个控件,是ListView和GridView的升级版。该控件具有高度灵活、高度解耦的特性,并且还提供了添加、删除、移动的动画支持,分分钟让你作出漂亮的列表、九宫格、瀑布流。先来看下如何简单的使用RecyclerView设置LayoutManager设置Adapter(继承RecyclerView.Adapter)LinearLayoutManger:提供了竖向和横向线性布局(可实现ListView功能)

2023-03-22 09:31:13 817

原创 Android View MotionEvent的getX和getRawX的区别

getRawX是以屏幕左上角为原点(0,0)手触摸到按钮的位置为终点的坐标。getRawY同理。getX是以控件本身的左上角为原点(0,0)手触摸的位置为终点的坐标。

2023-02-02 16:28:47 559

原创 Android studio 护眼模式配置、字体大小设置、内存大小设置等各类疑难杂症

使用命令连接手机的ip地址,进行无线连接 adb connect 192.168.1.1:5555,出现connected to 192.168.1.1:5555 ,表示连接成功,查看androidstudio,可以找到设备并进行无线调试。点击“设置”选项,弹窗后选择“设备”按钮,点击左侧的“自动播放”选项,在右侧列表中,找到你手机的照片默认设置项,修改默认设置为“不执行操作”即可关闭照片弹窗程序。工具栏添加快捷工具图标,工具栏名称是Navigation Bar ,里面只有拉取,提交,历史,回滚;

2023-01-30 18:45:38 1489

原创 HashMap的负载因子为什么不设置成1

从代码中我们可以看到,在向HashMap中添加元素过程中,如果 元素个数(size)超过临界值(threshold) 的时候,就会进行自动扩容(resize),并且,在扩容之后,还需要对HashMap中原有元素进行rehash,即将原来桶中的元素重新分配到新的桶中。那就是当其中的元素个数达到临界值的时候,而这个临界值前面说过和loadFactor有关,换句话说,设置一个合理的loadFactor,可以有效的避免哈希冲突。负载因子为log(2)的时候,可以既减少哈希冲突,又浪费空间,是时间和空间的权衡。

2023-01-14 11:25:06 780

原创 数据结构与算法4—队列

(1)表示空队列, rear==front==0。(4)A出队后,rear==front==3。再插入元素时,会出现假溢出的情况。3.出队列 OutQueue(&Q,&e) 将队列Q的队头元素删除,并用e返回其值,也称“退队”、“删除”。循环队列的物理存储未发生任何改变,其只是充分利用数组空间,想象将数组的首尾连接起来,形成一个循环队列。(c)B,C依次入队后, rear==3, front==0。(b)元素A入队后, rear==1, front==0。(a)表示空队列, rear==front==0。

2023-01-12 15:57:14 428

原创 数据结构与算法3—栈

采用顺序存储结构的栈简称为顺序栈。是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设整型变量top指示栈顶元素在顺序栈中的位置。top栈顶指针,惟一的确定一个链栈。链栈通常带有一个表头结点,所以top->next才指示栈顶元素。栈的几种状态(最大长度MaxSize为4):栈空、压栈、栈满、出栈。

2023-01-12 14:12:39 639

原创 数据结构与算法2—链表

在单链表中,最后一个结点的指针域为空。访问单链表中任何数据只能从链表头开始顺序访问,而不能进行任何位置的随机查询访问。如要查询的结点在链表的尾部则需遍历整个链表。所以单链表的应用受到一定的限制。双向链表用两个指针表示结点间的逻辑关系。其增加了一个指向直接前驱的指针域,这样形成的链表有两条不同方向的链,前驱和后继,因此称为双链表。操作①必须在操作③之前完成,否则*p的前驱结点就丢掉了。它将单链表中最后一个结点的指针指向链表的头结点,使整个链表头尾相接形成一个环形。带头结点且有n个结点的循环双链表。

2023-01-12 11:46:44 523

原创 数据结构与算法1—线性表

优点:顺序表中的任意数据元素的存储地址可由公式直接导出,因此顺序表可以“随机存取”其中的任意元素。数据结构的运算是定义在逻辑结构层次上的,而运算的具体实现则是建立在存储结构上的。(6)在线性表中删除元素:DeleteList(L,i)(5)插入新元素:InsertList(L,i,e)(7)把已有线性表置为空表:ClearList(L)(2)求线性表L的长度:GetLength(L)(4)按值查找:LocateList(L,e)(3)按序号取元素:GetNode(L,i)表中数据元素的类型是相同的。

2023-01-12 11:02:45 456

原创 数据结构与算法0—大纲

算法的特征:有穷性、确定性、可行性、输入(>=0)、输出(>=1)图大概一共有4中存储方式:邻接矩阵,邻接表,边集数组,十字链表。算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰。,算法代表着用系统的方法描述解决问题的策略机制.是指相互之间存在着一种或多种关系的。线性结构代表性结构有:线性表、 栈、队列。算法效率的度量:时间复杂度、空间复杂度。十字链表是有向图的一种链式存储结构。非线性结构代表性结构有:树、图。元素的集合和该集合中数据。

2023-01-12 10:46:21 279

原创 LinkedList为什么不支持高效的随机访问

那关键的问题我想随即访问一个元素,比如说有1W个元素LinkedList,你现在要访问第9999个元素,他是这么访问的,他先将第一个元素拿出来看下不是,然后找A的引用,再将B拿出来还是不是,然后再找,他就这样一直找啊找,找啊找,在他找第9998还是不是在把9998的引用指向的元素拿出,oh year找到了,然后给你。LinkedList是由链表实现的,针对元素的插入删除比较高效,但是不支持随机访问,只能一个元素一个元素的遍历,数组根据下标支持随机访问。因此,获取最后一个元素比第一个元素花费更多的时间。

2023-01-11 17:11:28 716

原创 new Integer(123) 与Integer.valueOf(123) 的区别?他们相等吗?

在jdk 1.8 所有的数值类缓冲池中,Integer 的缓冲池IntegerCache 很特殊, Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对。valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就。这个缓冲池的下界是- 128,上界默认是127,但是这个上界是可调的,在启动。围内的Integer 实例使用自动装箱来创建,那么就会引用相同的对象。在使用这些基本类型对应的包装类型时,如果该数值范围在缓冲池范围内,就可。

2023-01-06 15:11:18 560

原创 Bitmap.recycle()会立即回收么?什么时候会回收?如果没有地方使用这个Bitmap,为什么垃圾回收不会直接回收?

o bitmap.recycle()方法用于回收该Bitmap 所占用的内存,接着。 getByteCount():API12 加入,代表存储 Bitmap 的。将bitmap 置空,最后使用System.gc()调用一下系统的垃圾回。这个Bitmap 对象是由Java 部分分配的,不用的时候。的,这个只能调用底层的功能释放。Bitmap 的宽高进行拉伸,进而改变Bitmap 占用内存的。简单的说,一部分是Java 部分的,一部分是C。o 但是那个对应的C 可用的内存区域,虚拟机是不能直接回收。

2022-12-29 14:39:15 1093

原创 Android ContentProvider一个标准的内容提供器的创建封装代码和使用例子

所以,对于content://com.example.app.provider/table1 这个内容URI,它所对应的MIME。而现在,我们需要对传入的Uri 参数进行。这就表示调用方期望访问的是com.example.app 这个应用的table1 表中的数据。UriMatcher 的match()方法判断出调用方期望访问的是哪张表,再对该表中的数据进行相应。现在,我们可以继续完善MyProvider 类中的内容,这次实现getType()方法的逻辑,代。那么前面所提到的,如何才能保证隐私数据不。

2022-12-29 14:21:05 744

原创 Android动态获取和使用其他三方APP的Context和Resources图片资源文件

方案:根据目标app的包名创建获取它的Context上下文对象,再通过Context获取Resources对象以及获取里面的图片资源等。需求:三方app想要获取手机默认桌面Launcher App里的壁纸图片资源。

2022-12-28 10:01:10 664

原创 进程保活最全实现方案(使用黑、白、灰三种方案,达到不死进程)

进程,与普通的启动方式区别在于,它不会在系统通知栏处出现一个Notification,看起来就。白色保活手段非常简单,就是调用系统api 启动一个前台的Service 进程,这样会在系统的。熟悉Android 系统的童鞋都知道,系统出于体验和性能上的考虑,app 在退到后台时系统并。阿里系的app 后,有可能就顺便把其他阿里系的app 给唤醒了。在系统内存不足的情况下,系统开始依据自身的一套进程回收机制来判断要kill 掉哪些进程,进程的oom_adj 越大,表示此进程优先级越低,越容易被杀回收;

2022-12-12 18:01:35 968

原创 Android Context对象最详细的分析介绍

出于安全原因的考虑,Android 是不允许Activity 或Dialog凭空出现的,一个Activity 的启动必须要建立在另一个Activity 的基础之上,也就是以此形成的返回栈。接子类就是Activity,所以Activity 和Service 以及Application 的Context 是不一样的,只有。们具体Context 的功能则是由ContextImpl 类去实现的,因此在绝大多数场景下,Activity、这三个类虽然分别各种承担着不同的作用,但它们都属于Context 的一种,而它。

2022-12-12 17:54:42 518

原创 APP启动流程:从点击应用图标到Activity启动流程

⑤system_server进程在收到请求后,进行一系列准备工作后(同上),再通过binder IPC向App进程发送scheduleLaunchActivity请求;⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。②system_server进程接收到请求后判断,如果不存在目标进程则通过AMS向zygote进程发送创建进程的请求(通过Socket);

2022-11-30 14:28:14 391

原创 一个应用程序APP安装到手机上时发生了什么变化

安装和卸载都是通过PackageManager,实质上是实现了PackageManager的远程服务PackageManagerService来完成具体的操作,所有细节和逻辑均可以在PackageManagerService中跟踪查看;所有安装方式殊途同归,最终就回到PackageManagerService中,然后调用底层本地代码的install来完成。

2022-11-30 10:25:44 268

原创 Android自定义APP崩溃日志的异常捕捉

如果APP异常退出的话,会在SD卡的根目录下创建一个“applog”的文件夹,错误信息会以.log形式生成在这个文件夹下面,我们只需要拿到这个.log文件,改成.txt格式的就可以查看哪里的错误导致的崩溃问题。如果在用户手机上,我们可以把这些文件上传到我们服务器。开发的时候如果我们的app在客户的手机上运行的时候崩溃了,我们怎么才能拿到我们的错误信息呢?我们只需要将手机产生的异常捕捉下来存在本地SD卡中,然后在下次启动app的时候将SD卡中的错误信息发送到我们的服务器,我们就可以根据错误信息排除问题。

2022-11-29 17:50:18 541

unity3d 高级汽车材质效果 Car Paint - Pro 3.1下载

unity3d 高级汽车材质效果 Car Paint - Pro 3.1下载

2023-12-08

ADT-24.0.2下载兼容jdk1.8和jdk1.7

ADT-24.0.2下载地址和使用方法,能兼容jdk1.8和jdk1.7. 替换对应的jar 包就行了

2022-05-06

plugin_core.jar android Launcher3 androidstudio环境编译缺少的jar包

android Launcher3 androidstudio环境编译缺少的jar包 plugin_core.jar

2020-12-23

launcher_protos.jar android Launcher3 androidstudio环境编译缺少的jar包

android Launcher3 androidstudio环境编译缺少的jar包 launcher_protos.jar

2020-12-23

Android多渠道打包统计工具

一个Android多渠道打包批处理工具,实现了Android批量打混淆包。使用很简单放到一个文件夹下,输入apk名字即可

2015-04-27

Android中文翻译组——Android中文API合集(3).chm

Android中文翻译组——Android中文API合集(3).chm

2011-03-23

Google Android SDK开发范例大全(第2版) 源代码打包下载--(2)

Google Android SDK开发范例大全(第2版) 源代码打包下载--(2)

2011-03-11

.net连接MYSQL驱动类

.net连接MYSQL驱动类,有两个驱动类,两种方式噢

2008-10-15

轻松使用正则表达式之道

半小时轻松学会使用正则表达式,从此不再愁

2008-10-11

空空如也

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

TA关注的人

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