自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LittleFogCat的专栏

原创Android基础知识、源码解析、文章翻译

  • 博客(89)
  • 收藏
  • 关注

原创 Activity启动流程?基于Api30的Activity启动流程分析

前文:api 29版本Activity启动流程分析本文将根据Api 30(Android 11)的源码来分析Activity的启动流程。我个人把Activity的启动流程依次分为三个阶段:App进程中 ——[通过Binder]——> 系统进程中 ——[通过Binder]——> 回到App进程中下面按顺序进行梳理,主要整理大体脉络,不会大段源码,只展示关键代码。流程图在文末展示。文章目录一、App进程中1. Activity2. Instrumentation二、系统进程中1. Acti

2021-05-23 02:55:14 508 2

原创 极简Android开源弹幕控件:EasyDanmaku

EasyDanmaku是一个Android开源弹幕控件。全Java编写,体积小,性能高,使用方便,功能简洁。仿B站BiliBili弹幕样式,可调整字体大小,滚动速率等。

2018-06-13 14:34:15 1193 1

原创 Window10无法收到Windows11更新推送的问题

已经使用 PC Health Check 工具检查,确认电脑可以升级 Windows 11,但是在 Windows 更新界面无法收到 Windows 11 更新的提示。注意,这个过程可能需要几分钟,完成之后就可以在 Windows 更新界面看到升级到 Windows 11 的提醒了。按 Windows 徽标键 + S 或选择搜索,键入 任务计划程序,然后从结果列表中选择 任务计划程序。等待任务完成 (它将显示为 就绪)。右键单击 (或长按) 名为 Microsoft 兼容性评估程序 的任务,然后选择运行。

2024-03-27 01:01:00 592

原创 Android 4.4 以下,OkHttp访问Https报错,设置了sslSocketFactory仍无效的解决方法

Android4.4以下,使用OkHttp可能会报错:SSL handshake aborted: ssl=0x6b712c90: Failure in SSL library, usually a protocol error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

2024-03-04 16:59:14 993

原创 向日葵远程控制鼠标异常的问题

在通过向日葵进行远程控制的时候,可能会遇到鼠标位置异常的问题。此时,不管怎么移动鼠标,都会固定在屏幕最上方,而无法点击到正确的位置。造成这个问题的原因可能是向日葵对双屏的支持有问题,此时只需要在被控端按下 Win + P,选择“仅电脑屏幕”或“仅第二屏幕”即可。

2023-12-09 15:45:42 9245

原创 Nginx学习(在 Docker 中使用 Nginx)

使用下载最新的 Nginx Docker 镜像。下载完毕后,使用,即可启动 Nginx 容器。其中,-p 80:80表示将容器的 80 端口映射到 主机的 80 端口;表示将容器命名为“nginx”。这时候,访问主机 ip,可以看到 Nginx 的欢迎页,说明已经运行成功。

2023-11-13 13:04:00 1437

原创 PreferenceManager.setDefaultValues无效的问题

最后发现是 PreferenceManager 引用包错误,应该使用。在 xml 中设置了默认值后,调用。

2023-05-06 11:26:40 159

原创 【Android】在 Android / kotlin 中搭建 AspectJ 环境(2023年,Gradle 7+可用)

记录了2023年最新的Android引入AspectJ的方式,基于Gradle7和最新版Android Studio

2023-04-03 09:39:39 933 4

原创 【Android】ActionBar两侧有空白的问题

分析了在Android平板设备上,ActionBar两侧出现空白的问题

2023-04-03 09:32:15 155

原创 Compose中,AlertDialog圆角设置无效,或四角出现白色背景的解决方式

AlertDialog是compose中的一个控件;在使用的过程中,发现对其设置圆角之后未生效,于是探究一番。

2023-03-19 10:49:56 1067

原创 Git 切换分支:Please commit your changes or stash them before you switch branches.(SourceTree))

Git 切换分支的时候遇到提示:Please commit your changes or stash them before you switch branches.意思是切换分支之前需要先提交当前的更改;但是我又不想把修改提交到当前分支,应该怎么办?这时就可以用 Git 的贮藏(git stash)功能。在 SourseTree 里面,点击最上方的按钮就能用贮藏功能保存代码了。切换分支之后,在左侧的贮藏标签点击右键即可恢复更改。

2023-03-19 10:49:53 2311

原创 【Java】ConcurrentHashMap/CopyOnWriteArrayList简析

ConcurrentHashMap和CopyOnWriteArrayList都是java.util.concurrent包下的类,分别解决了HashMap和ArrayList的线程安全问题。本文以对这两个类进行简析,并不作详尽分析。相关文章【Java】HashMap原理及相关面试题【Java】ArrayList、LinkedList原理及相关面试题本文源码版本为Java14。一、ConcurrentHashMapConcurrentHashMap的数据结构大部分与HashMap相同,依旧是数组

2022-01-28 09:17:08 326

原创 Gradle sync failed: Sync failed: reason unknown

尝试https://blog.csdn.net/qq_28078489/article/details/120024317,各种改java版本无果。最后把其他窗口关掉只剩当前项目的,然后清空idea日志,成了

2022-01-17 09:37:57 1759

原创 【Java】ArrayList、LinkedList原理及相关面试题

文章目录一、数据结构二、增删改查1. ArrayListArrayList 增ArrayList 删ArrayList 改ArrayList 查2. LinkedListLinkedList 增LinkedList 删LinkedList 改LinkedList 查5. 小结三、相关面试题1. ArrayList添加元素和删除元素的效率如何?时间复杂度是多少?ArrayList和LinkedList如何选择?2. ArrayList线程安全吗?为什么?如何解决多线程问题?3. ArrayList与Vecto

2022-01-09 19:21:16 1973

原创 ThreadLocal

一、ThreadLocal1. 用法一个类可以通过 ThreadLocal 在当前线程内部创建一个独一无二的副本。通过threadLocal.get()和threadLocal.set(inst)可以获取和设置当前线程中这个副本。换句话说,一个ThreadLocal<T>对象可以实现不同的线程对应不同的T类型对象。如下例: ThreadLocal<Integer> threadLocal = new ThreadLocal<>();

2022-01-04 01:01:19 941

原创 【Java】HashMap原理及相关面试题

HashMap与Hashtable两个类都是通过Key-Value对存储的数据结构。根据官方的说法,二者唯二的区别是HashMap线程不安全而Hashtable线程安全,并且HashMap允许null值而Hashtable不允许。Hashtable实现线程安全的方式是使用synchronized修饰方法,所以二者基本一致。由于Hashtable效率较低,所以Java官方不建议使用这个类了;单线程的情况下使用HashMap,多线程的时候使用ConcurrentHashMap。一、数据结构1. 结构H

2022-01-03 13:30:02 1568

原创 【Java】String是不可变的,真的如此吗?从原理深度剖析

学Java的人或多或少都会得到这么一个信息:String是不可变的。那么果真如此吗?本文前置知识:反射,Java内存模型。一、如何改变一个String打开String的源码,赫然可以看见,其实String对象的数据储存在它的value数组中。在早起版本的Java中,这是一个char[]类型的数组,较晚版本中替换为byte[]类型。public final class String { private final byte[] value; // ……}那么,如果利用反射把这个

2022-01-02 01:15:11 297

原创 【kotlin】kotlin内置函数run、with、apply、also、let

run、with、apply、also、let这五个函数作用基本一致,就是运行闭包中的代码并返回值,只有在用法上有一些区别。用法示例:现有Person类定义如下:class Person( var name: String = "bob", var age: Int = 15, var sex: Char = '男', var height: Int = 194, var weight: Int = 88)以下代码

2022-01-01 23:05:24 1377

原创 您的手机上未安装应用程序 / App isn‘t installed

安装遇到错误,点击应用图标,提示您的手机上未安装应用程序或App isn't installed。错误原因:这种情况出现的原因是系统找不到或无法启动应用的Launcher Activity。在本案中,Manifest文件中,Launcher Activity标签的exported被设置为false,导致无法启动。解决方式:在本案中,将启动Activity的exported属性设置为true。相关:组件的exported属性表示其是否能够被其他应用调用。如果设置为false,则只能被本应用调用。

2021-11-26 21:56:08 3926 2

原创 报错:Manifest merger failed with multiple errors, see logs

1. AndroidX和support库冲突报错全文:Error:AndroidManifest.xml:24:18-86 Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.5.0] AndroidManifest.xml:24:18-86 is also present at [com.android.support:

2021-06-11 11:28:51 578 2

原创 【Android】分享一个在RecyclerView中使用数据绑定(DataBinding)的Adapter基类

文章目录一、BaseDataBindingAdapter代码二、示例实现效果:示例代码1. 布局2. 类代码BaseDataBindingAdapter是一个简易的、在RecyclerView中使用数据绑定、只支持一种数据类型和布局的Recycler Adapter基类,适用于单一数据、布局类型的简单RecyclerView。使用BaseDataBindingAdapter,实现一个简易的、使用数据绑定的Recycler Adapter,只需要极少量的代码。BaseDataBindingAdapter的

2021-02-23 18:47:49 1129 1

原创 【Android】Handler、Looper、消息队列运行机制原理解析及相关面试题

Handler及消息队列是Android中一个基本的知识点,也是Android应用建立的基石。本文介绍了Handler的运行机制,以及相关面试题的答案。目录:1、Looper和消息队列机制;2、Handler发送消息流程;3、相关面试题

2021-02-10 13:34:03 567

原创 【Lua】十分钟入门

Lua是一种上手成本很低的脚本语言,本文简单阐述了lua的入门知识。文章目录一、基本语法1. 变量2. 循环2.1 for2.2 while2.3 repeat-until3. 条件语句4. 函数5. 运算符二、字符串和表1. 字符串1.1 字符串的初始化1.2 字符串的一些操作2. 表2.1 表的初始化2.2 表的一些常用操作三、一些常用函数一、基本语法1. 变量Lua有8个基本类型:无效值nil、布尔值boolean、数number、字符串string、函数function、自定义类型userd

2021-01-28 20:17:32 434

原创 经典算法题目之Top-K问题(Leetcode 215)

top-k问题是经典面试算法题目(leetcode 215:第k大的元素)。本文介绍了三种top-k问题的解法:直接排序、堆、快速排序分区算法。使用Java实现。

2021-01-28 18:30:07 661

原创 Java/Android中的线程池,看这一篇就够了!(超详细)

文章目录一、为何要使用线程池二、线程池简介1. 什么是线程池2. 线程池的使用3. 线程池的分类三、线程池的工作流程1. 典型的线程池使用方式2. 线程池工作流程四、线程池中的一些重要概念五、通过源码详细分析线程池1. ctl2. execute(runnable)方法3. workQueue / Worker4. addWorker(runnable, boolean)方法5. runWorker(Worker)方法六、总结一、为何要使用线程池在Java中,要使用多线程,除了使用new Thread(

2020-05-27 00:54:05 739

原创 两个队列实现一个栈

无意间看到一个有趣的题目,两个队列实现一个栈。想了半天,也没有什么优雅的解法,无非是遍历队列取到最后一个值,作为栈的尾巴pop出来。毕竟队列是先进先出的,而栈是后进先出,想要取到队列的最后一个值,必然是要遍历一下的。代码很简单,就粘贴了。节点: class Node<T> { Node<T> next; T val; ...

2020-03-13 09:08:07 147

转载 接口(Api)版本号命名规则

0. 前言版本号的命名和更新问题,是开发者的责任感和前瞻性的问题。1. 项目立项时版本格式:0.0.02. 开发阶段时此时系统尚不稳定,随时可能增减或者修正API。版本格式:0.次版本号.修订号,版本号递增规则如下:主版本号:0表示正在开发阶段;次版本号:增加新的功能时增加;修订号:只要有改动就增加。3. 开发完成后,发布API,或进入二方库时此时系统已经基本稳定...

2020-03-08 04:49:40 2023

原创 Android辅助工具,G分助手的实现 - 心悦俱乐部app自动签到、领G分

最近在使用心悦俱乐部这个APP,里面有个代币叫G分,可以换游戏道具,但需要每天领取,比较繁琐。于是索性做一个自动领取G分的辅助,姑且叫它G分助手吧。这个辅助主要是通过Accessibility Service(辅助功能)实现的,总体思路就是通过AccessibilityService模拟点击来实现自动化。项目地址是https://github.com/LittleFogCat/gpointhel...

2020-03-07 02:28:05 1313

原创 Github pages Hexo博客访问量统计功能的实现

之前使用Hexo搭建了自己的github.io博客https://littlefogcat.github.io/。但是没有访问统计功能,让人头大。于是决定着手整一个。首先需要有一台自己的服务器,如果没有,或者图方便的话,就用busuanzi.js吧。不过对我个人而言,我更喜欢数据在自己手里,而且如果开发其他新功能也会方便许多。同时,也可以顺便学习一下技术。由于我对前后端开发几乎都是一窍不通,所...

2020-03-06 10:15:39 3752 6

原创 Toolkit.getDefaultToolkit().getScreenSize()导致的crash

大概是这样## A fatal error has been detected by the Java Runtime Environment:## EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffe38dc7837, pid=203556, tid=0x0000000000031d54## JRE version: Op...

2020-01-08 17:25:49 734

原创 Android Studio 一直不停updating indices / indexing的解决方式

遇到一个特别诡异的事情,Android Studio不明原因开始无限indexing,如图在网上搜索,几乎清一色所有的答案都是说Invalidate and restart;然而根本起不到任何作用。搜了半天也没有找到一个合理的方案,所以还是得自己摸着石头过河。最后,删除了user下的.AndroidStudio3.4文件夹,问题得到了解决,原因至今不明。但是副作用是设置丢失了,还好我有备份的...

2019-08-13 14:53:25 5184 1

转载 Android端RSA加密,后端无法解密的情况

https://blog.csdn.net/zsf5201314z/article/details/53665196Android端加密应使用Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”);

2019-08-12 10:48:54 1091 1

原创 Android Studio - New Kotlin File/Class中,class和file的区别

在新建kotlin文件的时候,有一个kind选项,其中的file和class有什么区别呢?二者唯一的区别就是,新建class的时候,会自动添加一个类,而新建file的时候,什么都没有。class:package top.littlefogcat.lazysheep.util/** * Created by LittleFogCat */class Sample {}fi...

2019-08-09 19:06:21 3912

原创 DataBinding报错:cannot find the setter for attribute xxx with parameter type xxx

https://blog.csdn.net/Dream2076/article/details/84305310报错信息如下:C:\Android\projects\LazySheep\app\build\generated\source\apt\debug\top\littlefogcat\lazysheep\DataBinderMapperImpl.java:18: 错误: 找不到符号i...

2019-08-07 15:39:24 5021

原创 阿里云MySQL无法连接,错误码10060

今天使用MySQL WorkBench连接阿里云服务器的数据库,发现打开连接总是失败,搜索了一圈也没有发现什么有价值的内容,都是什么检查网络,防火墙啥的。又搜了一圈,直到看到这篇文章,醍醐灌顶。https://www.cnblogs.com/mmzs/p/9201558.html里面轻描淡写的一句话引起了我的注意:4、在自己购买的服务器上将MySQL使用的3306端口开放,如果是在本地搭...

2019-07-14 04:40:29 1829

原创 《Android开发艺术探索》第14章 JNI和NDK编程

因为书中和网上搜到的方法都有些过时了,这里简单记录一下使用Android Studio进行NDK编程的过程。1. 在SDK Manager中安装NDK工具打开SDK Manager - SDK Tools,选中NDK,Apply,即开始安装NDK工具。2. 定义native方法2.1 生成.h头文件2.1.1 新建空工程,并在MainActivity同级目录下新建java类JniTest...

2019-07-09 00:22:37 97

原创 《Android开发艺术探索》第9章 四大组件的工作过程

9.1所谓四大组件是Activity、Service、BroadcastReceiver、ContentProvider。了解了他们的工作流程,可以更好的理解Android体系结构。9.2 Activity我们经常使用Activity#startActivity(intent)方法来启动一个Activity。startActivity()方法有许多重载,但是最后都会调用到Activity的s...

2019-07-09 00:20:00 134

原创 《Android开发艺术探索》第8章 理解Window和WindowManager

Window表示一个窗口,是View的实际管理者。在第4章的事件分发中已经知道了,点击事件是通过Window->DecorView->View来传递的。Window是一个抽象类,具体实现是PhoneWindow类。我们可以通过WindowManager来操作Window,具体实现是在WindowManagerService中实现的;WindowManager和WindowManage...

2019-07-09 00:18:37 131

原创 《Android开发艺术探索》第7章 动画

动画这一章内容比较少,而且之前看的也比较多了。简单总结一下:7.1 动画类型7.1.1 View动画View动画主要分为四种,平移TranslateAnimation、旋转RotateAnimation、缩放ScaleAnimation、透明度AlphaAnimation。这几种动画都是很常见很基本的,就不赘述了。另外还有帧动画,也就是若干图片一帧帧连续播放,比如我们的开机图片就是帧动画。...

2019-07-09 00:17:15 102

原创 《Android开发艺术探索》第5章 理解RemoteViews

RemoteViews提供了一种跨进程更新界面的方式,一般用于通知栏和AppWidget的开发中。5.1 RemoteViews的应用通知栏需要用到的NotificationManager和小部件所用的AppWidgetProvider,都是运行在系统的SystemServer进程之中。我们如果想要对其进行界面更新的话,就需要用到RemoteViews。要使用RemoteViews,需要以下...

2019-07-09 00:15:52 220

Android WebView.apk 浏览器内核 com.android.webview

Android 原生浏览器内核,包名 com.android.webview,内核版本116。 适用版本:Android API 24 及以上版本。 com.android.webview_116.0.5845.163-minAPI24.apk

2023-12-15

空空如也

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

TA关注的人

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