Android
文章平均质量分 73
LittleFogCat
这个作者很懒,什么都没留下…
展开
-
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 · 489 阅读 · 0 评论 -
【Android】ActionBar两侧有空白的问题
分析了在Android平板设备上,ActionBar两侧出现空白的问题原创 2023-04-03 09:32:15 · 131 阅读 · 0 评论 -
【Android】在 Android / kotlin 中搭建 AspectJ 环境(2023年,Gradle 7+可用)
记录了2023年最新的Android引入AspectJ的方式,基于Gradle7和最新版Android Studio原创 2023-04-03 09:39:39 · 763 阅读 · 2 评论 -
【Java】ConcurrentHashMap/CopyOnWriteArrayList简析
ConcurrentHashMap和CopyOnWriteArrayList都是java.util.concurrent包下的类,分别解决了HashMap和ArrayList的线程安全问题。本文以对这两个类进行简析,并不作详尽分析。相关文章【Java】HashMap原理及相关面试题【Java】ArrayList、LinkedList原理及相关面试题本文源码版本为Java14。一、ConcurrentHashMapConcurrentHashMap的数据结构大部分与HashMap相同,依旧是数组原创 2022-01-28 09:17:08 · 302 阅读 · 0 评论 -
【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 · 1929 阅读 · 0 评论 -
ThreadLocal
一、ThreadLocal1. 用法一个类可以通过 ThreadLocal 在当前线程内部创建一个独一无二的副本。通过threadLocal.get()和threadLocal.set(inst)可以获取和设置当前线程中这个副本。换句话说,一个ThreadLocal<T>对象可以实现不同的线程对应不同的T类型对象。如下例: ThreadLocal<Integer> threadLocal = new ThreadLocal<>();原创 2022-01-04 01:01:19 · 936 阅读 · 0 评论 -
【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 · 1542 阅读 · 0 评论 -
【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 · 283 阅读 · 0 评论 -
【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 · 1368 阅读 · 0 评论 -
报错: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 · 544 阅读 · 2 评论 -
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 · 488 阅读 · 2 评论 -
【Android】分享一个在RecyclerView中使用数据绑定(DataBinding)的Adapter基类
文章目录一、BaseDataBindingAdapter代码二、示例实现效果:示例代码1. 布局2. 类代码BaseDataBindingAdapter是一个简易的、在RecyclerView中使用数据绑定、只支持一种数据类型和布局的Recycler Adapter基类,适用于单一数据、布局类型的简单RecyclerView。使用BaseDataBindingAdapter,实现一个简易的、使用数据绑定的Recycler Adapter,只需要极少量的代码。BaseDataBindingAdapter的原创 2021-02-23 18:47:49 · 1044 阅读 · 1 评论 -
【Android】Handler、Looper、消息队列运行机制原理解析及相关面试题
Handler及消息队列是Android中一个基本的知识点,也是Android应用建立的基石。本文介绍了Handler的运行机制,以及相关面试题的答案。目录:1、Looper和消息队列机制;2、Handler发送消息流程;3、相关面试题原创 2021-02-10 13:34:03 · 542 阅读 · 0 评论 -
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 · 470 阅读 · 0 评论 -
Android辅助工具,G分助手的实现 - 心悦俱乐部app自动签到、领G分
最近在使用心悦俱乐部这个APP,里面有个代币叫G分,可以换游戏道具,但需要每天领取,比较繁琐。于是索性做一个自动领取G分的辅助,姑且叫它G分助手吧。这个辅助主要是通过Accessibility Service(辅助功能)实现的,总体思路就是通过AccessibilityService模拟点击来实现自动化。项目地址是https://github.com/LittleFogCat/gpointhel...原创 2020-03-07 02:28:05 · 1281 阅读 · 0 评论 -
使用Android Studio查看隐藏的类
在使用Android Studio查看sdk源码的时候,有许多类是找不到的,比如PhoneWindow等,这给我们带来了一些不便。如何查看这些被隐藏的源码呢?首先我们需要在github下载去掉了@hide标记的android.jarhttps://github.com/anggrayudi/android-hidden-api然后,将去掉了标记的android.jar覆盖到对应And...原创 2019-05-14 07:51:46 · 1252 阅读 · 0 评论 -
Android报错集锦
亲身经历的报错集锦。在Android开发中会遇到各种奇奇怪怪的报错。很多报错利用搜索引擎能够解决,但是还有一部分是要靠自己摸索才能克服的,于是把这部分报错记录在这篇博客里面,做一个参考。有很多报错原因是有多种的,具体情况需要具体分析,这里只是提供一种解决方案或思路。文章目录1. Error:Could not find com.android.tools.build:gradle:4.12. ......原创 2019-06-14 02:36:19 · 1525 阅读 · 1 评论 -
《Android开发艺术探索》第5章 理解RemoteViews
RemoteViews提供了一种跨进程更新界面的方式,一般用于通知栏和AppWidget的开发中。5.1 RemoteViews的应用通知栏需要用到的NotificationManager和小部件所用的AppWidgetProvider,都是运行在系统的SystemServer进程之中。我们如果想要对其进行界面更新的话,就需要用到RemoteViews。要使用RemoteViews,需要以下...原创 2019-07-09 00:15:52 · 212 阅读 · 0 评论 -
《Android开发艺术探索》第4章 View的工作原理
本章代码GitHub地址:https://github.com/LittleFogCat/AndroidBookNote/tree/master/chapter04_view4.0 要点View的绘制流程measure -> layout -> draw常用回调onAttach onVisibilityChanged onDetach滑动处理4.1 ViewRoot De...原创 2019-02-25 11:36:44 · 327 阅读 · 0 评论 -
Android开发 之《最强大脑》“数字华容道”
文章目录0 背景0.5 结构1 定义棋盘和棋子1.0 棋子1.1 棋盘属性1.2 排列棋子2 生成棋局3 游戏过程4 高分榜5 作弊&amp;后记0 背景最近看《最强大脑》,看到其中的“数字华容道”这个小游戏挺有意思,于是萌生了自己写一个的想法,正好结合之前的文章《Android开发艺术探索》第4章 View的工作原理 ,顺便复习一下。GitHub链接:https://github.com/...原创 2019-02-25 10:03:56 · 2439 阅读 · 3 评论 -
使用AccessibilityService来做一个自动抢红包插件
1 简介AccessibilityService中文翻译是辅助功能,本意是帮助残障人士来方便使用手机的功能。因为其可以全局监听和发送事件,所以我们可以通过这个功能来进行一些“僭越”的操作,比如自动抢红包,修改键值等。查看Android官方网站关于accessibilityservice介绍,如下:原文:The classes in this package are used for de...原创 2018-11-23 15:56:24 · 1511 阅读 · 0 评论 -
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 · 3831 阅读 · 0 评论 -
Android开发日记
今天在Bugly查看崩溃日志的时候,发现了一个由全局变量造成的空指针异常。 我们知道,在系统资源不够时,全局变量可能会被回收,这个时候再去调用,就会造成意想不到的情况发生。所以说,在应用里面应该尽量避免使用全局变量。...原创 2018-08-22 14:19:36 · 284 阅读 · 0 评论 -
《Android开发艺术探索》第7章 动画
动画这一章内容比较少,而且之前看的也比较多了。简单总结一下:7.1 动画类型7.1.1 View动画View动画主要分为四种,平移TranslateAnimation、旋转RotateAnimation、缩放ScaleAnimation、透明度AlphaAnimation。这几种动画都是很常见很基本的,就不赘述了。另外还有帧动画,也就是若干图片一帧帧连续播放,比如我们的开机图片就是帧动画。...原创 2019-07-09 00:17:15 · 100 阅读 · 0 评论 -
《Android开发艺术探索》第8章 理解Window和WindowManager
Window表示一个窗口,是View的实际管理者。在第4章的事件分发中已经知道了,点击事件是通过Window->DecorView->View来传递的。Window是一个抽象类,具体实现是PhoneWindow类。我们可以通过WindowManager来操作Window,具体实现是在WindowManagerService中实现的;WindowManager和WindowManage...原创 2019-07-09 00:18:37 · 128 阅读 · 0 评论 -
《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 · 129 阅读 · 0 评论 -
《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 · 96 阅读 · 0 评论 -
Android Studio 一直不停updating indices / indexing的解决方式
遇到一个特别诡异的事情,Android Studio不明原因开始无限indexing,如图在网上搜索,几乎清一色所有的答案都是说Invalidate and restart;然而根本起不到任何作用。搜了半天也没有找到一个合理的方案,所以还是得自己摸着石头过河。最后,删除了user下的.AndroidStudio3.4文件夹,问题得到了解决,原因至今不明。但是副作用是设置丢失了,还好我有备份的...原创 2019-08-13 14:53:25 · 5014 阅读 · 1 评论 -
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 · 4912 阅读 · 0 评论 -
Android端RSA加密,后端无法解密的情况
https://blog.csdn.net/zsf5201314z/article/details/53665196Android端加密应使用Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”);转载 2019-08-12 10:48:54 · 1076 阅读 · 1 评论 -
logcat没有输出的解决方法
连上真机,没有任何输出,试了各种方法,最后才发现是因为后面的filter选的firebase改成show only selected application就行了,真是自找麻烦原创 2017-02-20 15:13:27 · 2888 阅读 · 0 评论 -
使用Android自带的DownloadManager下载文件
简介基础用法完整代码先放Google官方文档:https://developer.android.google.cn/reference/android/app/DownloadManager简介使用Context.getSystemService(Context.DOWNLOAD_SERVICE)来获取DownloadManager的实例Download...原创 2018-07-09 14:37:07 · 3978 阅读 · 1 评论 -
用Bundle传递ArrayList
本以为是什么难事,还百度了半天都没找到合适的方法,结果看了下ArrayList的源码 自己都笑了。Bundle可以传递Serializable对象原创 2017-05-03 11:19:13 · 2687 阅读 · 0 评论 -
低仿微信
先占个坑原创 2017-03-29 00:43:02 · 327 阅读 · 0 评论 -
Android WebView 与JS的数据交互
原文 http://blog.csdn.net/cappuccinolau/article/details/8262821/关于WebView我们知道目前android市场上的一些应用采用的开发方式大致分为三种:Native App、Web App、Hybrid App。本文主要是Hybrid App中实现的主要技术native组件与js的数据交转载 2017-03-27 22:02:07 · 281 阅读 · 0 评论 -
Android项目:Cool Weather酷欧天气(附源码)
最近看了郭霖大神的《第一行代码(第二版)》(第二行代码?),决定照着书中的样例做了一个Cool Weather的客户端,并进行了优化。整理一下完成的思路,并附上部分代码和注释以及自己的理解。逻辑部分一、首先通过网络接口获得全国省市县的列表。1. 新建一个HttpUtil类,在其中创建一个sendOkHttpRequest()方法: public static原创 2017-02-24 23:10:55 · 16492 阅读 · 14 评论 -
Android开源图表库:HelloCharts
HelloCharts is a charts/graphs library for Android compatible with API 8+, several chart types with support for scaling, scrolling and animations本文介绍了一种HelloCharts折线图最简单的用法原创 2017-03-06 00:16:32 · 1088 阅读 · 0 评论 -
java获得当前格式化时间
最简单的方式:DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");Date date = new Date();System.out.println(df.format(date));以上打印出的结果:2017-03-01 18:09:12如果要获得其他格式,就将SimpleDateFormat方法的参原创 2017-03-01 18:19:23 · 324 阅读 · 0 评论 -
Android Studio中不容易发现的亮点
在定义一个长字符串的时候,在字符串中间按回车,AS会自动用加号分割字符串:在需要分隔的地方按下回车原创 2017-02-16 02:02:22 · 276 阅读 · 0 评论 -
【Android】No resource found that matches the given name “xxx” 的解决方法
今天莫名其妙又提示D:\eclipseworkspace\PracBCRcv\res\values\styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.自从装了SDK之后就没消停过,总是出些原创 2015-05-23 11:30:22 · 3643 阅读 · 0 评论