自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟博客

不积跬步无以至千里

  • 博客(456)
  • 资源 (25)
  • 收藏
  • 关注

原创 Android之 finishAffinity的作用

android finishAffinity的作用

2022-08-06 16:26:42 427

原创 Android 之LocalBroadcastManager原理简析

Android LocalBroadcastManager原理解析

2022-07-30 00:13:22 413

原创 Android 之Application ContextImpl关系分析

Android Application和ContextImpl的关系

2022-07-25 17:01:56 274

原创 Activity之onCreate、onRestoreInstanceState恢复数据的区别

onCreate() 、onRestoreInstanceState()恢复数据的区别

2022-07-23 22:34:32 850

原创 Android Space 源码简析

Space 简析

2022-06-21 21:41:46 906

原创 Flutter之Pigeon插件与Android通信使用指南

Flutter pigeon插件使用指南,pigeon可以使得flutter与原生native的通信

2022-06-10 11:01:17 759 1

原创 Activity onSaveInstanceState 状态保存和恢复机制实战之ManagedDialog应用

Activity自动管理Dialog的状态

2022-06-06 16:07:50 272

原创 Flutter之Key简析

在博主《Flutter之GlobalKey详解》和《Flutter之Widget 更新机制原理浅析》中两篇博文中简单的说明了key的作用,这里在简单做个笔记(翻译子官方文档),加深自己对key的理解。官方对于key的解释如下:///Key对象是用作Widget、Element、SemanticsNode的标识符,也就是唯一ID/// A [Key] is an identifier for [Widget]s, [Element]s and [SemanticsNode]s.///当newWidg

2022-05-06 19:19:40 721

原创 mac flutter开发环境搭建 zsh: command not found: flutter解决方案

1、github下载flutter项目源码博主下载到/Users/arthur/Documents/flutter/目录下,(arthur是我Mac的用户名)2、配合环境变量,使用终端执行如下命令:2.1、sudo vim ~/.bash_profile,打开 .bash_profile文件。2.2、按i进入输入模式,在文件内容的末尾加入以下内容://flutter 目录export PATH=/Users/arthur/Documents/flutter/bin:$PATH//androi

2022-05-02 13:28:11 2301

原创 ASM的基础使用 Android 自动化埋点方案原理剖析

Android 自动化埋点方案原理

2022-04-23 13:17:09 2364 2

原创 Android Studio couldn‘t generate bytecode view, no .class file found

Android Studio 安装了插件ASM Bytecode Viewer,准备学学ASM相关知识,为Android自动化埋点原理做技术储备。ASM Bytecode Viewer使用步骤:1、Android Studio 安装ASM Bytecode Viewer插件,安装完成后重启Android Studio,2、然后选中MainActivity,右键选择ASM Bytecode Viewer:结果就出现了 couldn’t generate bytecode view, no .cla

2022-04-22 19:25:23 2907 2

原创 Android Studio Gradle Plugin开发入门指南

Plugin插件入门指南1、本文目的2、Plugin简介3、Android Studio开发插件的步骤3.1 创建Java library3.2 配置plugin 项目的build.gradle文件。3.3 发布插件到本地。3.4 发使用本地插件。1、本文目的 1、了解gradle 插件的基本知识 2、掌握插件开发的基本方法 3、根据Plugin的相关知识为后面逐步深入解析Android自动化埋点的实现原理做知识储备 4、本书参考资料: 4.1、《Gradle实战》一

2022-04-13 16:48:20 2256

原创 Android 代码重构案例

很久之前读过一本书《重构,改善既有代码设计》,这本书对自己的影响很大,里面的一些实用性技巧现在还在保持和使用。今天阅读团队小伙伴的代码,发现了这么一段:private void setTextViewData(int type) { switch (type) { case 1: textView.setText("aaaa"); break; case 2: textView.setText(

2022-03-30 09:42:11 2573

原创 力扣之两数相加

原题出处https://leetcode-cn.com/problems/add-two-numbers/,描述如下图:解题思路很简单:当前两个链表的节点node1和node2形成的新节点的值的算法为//上一个节点的进位,比如3+9=12,进位为1 (进位的英文翻译carry)int carry=(preNode1.val+preNode2)/10;int sum = node1.val+node2.val+carry;//比如4+6=10,去余则为0Node newNode = New No

2022-03-02 17:04:49 2028

原创 Android 签名问题记录MinSdkVersionException: Failed to determine APK‘s minimum supported platform version

com.android.apksig.apk.MinSdkVersionException: Failed to determine APK's minimum supported platform version. Use --min-sdk-version to override at com.android.apksigner.ApkSignerTool.verify(ApkSignerTool.java:447) at com.android.apksigner.ApkSignerTool.ma

2022-03-02 13:21:29 3636

原创 Androrid Studio Debug Warning:debug info can be unavailable

在使用Android Studio进行debug的时候,偶尔会弹出如下图的弹框:Warning:debug info can be unavailable.Please chose other application using ADB解决方式如下:1、拔下手机的USB数据线。2、关闭手机开发者选项3、关闭开发者选项下的"USB调试"4、打开"USB调试"5、打开开发者选项6、重新插上USB数据线...

2022-03-02 09:33:54 3230

原创 Java 单向链表翻转

链表翻转的思路有很多,再此做个记录。思路一:最简单的思路就是先遍历链表,逐一将链表里的节点放入到栈里面;然后在遍历栈,将栈里的元素在逐一出栈形成新的链表。主要是利用了栈的后进先出的特点。思路二:遍历链表,然后将链表的修改head.next的指向,每一次遍历都将head.next指向已经遍历过得节点就可以了: /** * 链表翻转 * @param node */ public ListNode reverseListNode(ListNode node) { //新链表

2022-02-24 16:22:39 795

原创 Android WorkManager 实战讲解

WorkManager实战讲解WorkManager实战实例1、 定义工作,创建Worker对象2、链接工作3、定义工作请求WorkRequest4、WorkManager、ViewModel、LiveData结合本篇博文以Android 官方demo WorkManagerSample为例,分析WorkManager的使用方法和相关知识点。通过本篇博文你可以理解和掌握以下知识点:1、WorkManager的基本用法2、多个Worker先后执行的链接方式。3、WorkManager和ViewMode

2022-02-23 17:03:38 944 5

原创 Android LoaderManager原理剖析

LoaderMananer原理详解,让你彻底弄懂其内部工作原理

2022-02-16 17:53:27 1307 12

原创 Flutter实战之GetX工具类封装-GetUtils

在开发过程中经常会定义各种Utils类,用来作为常用的辅助工具来使用,GetUtils 是getx为我们提供一些常用的工具类库,它提供了一些常用的方法,避免了我们二次开发,比如通过GetUtils我们可以用来判断参数是否是图片,是否是word,是否是excel,是否是音频,是否是图片,邮箱和手机号码等等等。1、比如判断字符串是否是相同字符:Example: 111111 -> true, wwwww -> true, 1,1,1,1 -> trueGetUtils.isOneKind

2022-02-15 10:21:23 1892

原创 Flutter之GetX入门指南 ObxWidget原理剖析

GetX ObxWidget的内部原理

2022-02-12 09:46:50 1655

原创 Android Gradle动态打32位或者64位的包

正在开开心心的敲代码,以前公司的后端同事问我一个问题:“android 打包的时候如果需要分别打32位和64位的包,gradle要怎么配置和执行可以做到?而不是每次手动修改gradle.build文件?”这个问题还真是没想过,幸亏很久之前读过《Gradle 实战》这本书,有点儿灵感,然后实现之,在此记录下来,以免以后忘记。算是2022年1月21日第一篇学习笔记。1、在android的rootProject的build.gradle中,定一个一个变量:ext { //约定1代表32位,2代表64位,

2022-01-21 14:59:27 13794 1

原创 2021年终总结

兜兜转转,日子晃到了2021年尾。今年感觉过的可真快。2021年终总结一、最大的收获二、最大的遗憾三、学习相关3.1 博客、书籍相关3.2 业余爱好3.3 游戏风云3.4 社会所得3.5 最有价值的购物3.6 其他杂谈一、最大的收获在2021年6月6号,亲爱的老婆给我生了一个可爱的女儿,郭梧悠。我博客的头像就是我女儿四个月左右照的,CSDN昵称也是小棉袄的名称。如今宝宝再过6天就七个月啦,每天都要看她的照片和视频,仿佛有了无穷的动力。闺女的出生也改变了自己的生活态度。比如更积极,不论每天过的多么操蛋,

2021-12-31 14:16:40 8400 14

原创 Android LiveData组件分析

文章目录前言一、不使用LiveData的计数器存在的问题二、使用LiveData的实现计数器三、LiveData 添加观察者四、LiveData postValue和setValue方法分析前言Android ViewModel组件详解博文中以计数器为例说明了ViewModel的用处和原理,它可以有效的预防内存泄漏问题。本文来分析另外一个组件LiveData。LiveData组件跟ViewModel结合,可以说是以一大利器。本文以2.2.0版本为例配合Android ViewModel组件详解一文中的计

2021-12-27 13:56:49 1032 2

原创 Android ViewModel组件详解

Android ViewModel原理详解

2021-12-26 10:41:10 1296

原创 Java多线程为什么使用while循环来调用wait方法

Java多线程为什么使用while循环来调用wait方法?《java并发编程实战》一书第14章列出了详细的原因(多看书还是会有收获滴),在此总结下来。示例代码://示例代码,从队列中获取元素public synchronized void put(V v) throws InterruptedExcetpion{ //不能使用if(isFull) while(isFull()){ wait(); } doPut(v) notivyALl();}详细原因博主梳理如下:

2021-12-11 15:24:49 682

原创 Flutter之RenderView RenderObject ParentData知识点梳理

RenderView RenderObject ParentData知识点梳理 前言一、参考资料二、RenderView1、Flutter runApp的具体流程:2、 RenderView的创建3、RenderObjectToWidgetElement 构建详解前言本篇文章详细的说明了RenderView ,RenderObject在Flutter框架体系中的位置,为进一步分析Flutter其他相关做知识储备,其实本篇的内容只要读者自己简单追踪下其源码,就可以轻松了解一、参考资料这些相关资料大部分

2021-12-07 09:23:01 2495

原创 Flutter实战之FlutterPlugin插件入门指南

通过本篇博文你可以了解到FlutterPlugin的使用方法以及FlutterPlugin在FlutterToast的应用。FlutterPlugin使用指南及FlutterToast原理剖析1、FlutterPlugin是什么?1.1 FlutterPlugin的用法和项目结构2、FlutterToast原理剖析。2.1 ToastNoContext :不带Context的Toast2.2 Fluttertoast.showToast简单说明。2.3 FlutterToastPlugin 简析1、F.

2021-12-03 15:26:56 1341

原创 Fultter 实战No toolchains found in the NDK toolchains folder for ABI arm-linux-androideabi

最近准备学习下Flutter的Toast插件的使用,Windows环境,Android Studio 4.1.1版本。从github上下载demo运行后会报如下错误。FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:stripDebugDebugSymbols'.> No toolchains found in the NDK toolchains folde

2021-12-02 16:36:30 2012

原创 Java并发编程实战读书笔记之死锁

死锁的分类前言一、锁顺序死锁二、动态的锁顺序死锁。前言本篇学习笔记源自于《Java并发编程实战》第10章。提示:以下是本篇文章正文内容,下面案例可供参考一、锁顺序死锁看下面代码,很容易造成死锁,leftRight和rightLeft方法分别获取了left和right锁,只不过二者获取锁的顺序是相反的。那么如果一个Thread调用了leftRight,另一个Thread调用了rightLeft,并且两个Thread的操作是交错执行的,那么就容易发生时所。class LeftRightDead

2021-11-27 10:06:52 295

原创 如果从零开始开发一款APP,需要做哪些准备

今天在下班回去的地铁上,突然脑海中蹦出了这个问题!再结合自己微薄的项目经验,由此得出了这篇文章。鉴于博主是Android开发那么文中大部分都偏向于Android。闲言少数,书归正传,前提就不用多说了。1、需要确定好Android支持的最低版本。2、确定APP发布的渠道,方便以后数据统计。3、确定好APP的升级策略,比如最好能提供一个接口,用来判断是否强制用户升级。4、确定好使用哪些SDK,以及SDK需要收集的信息,比如MAC地址等等。编写好隐私政策和用户协议。特别是隐私政策,按照华为隐私政策的要求,

2021-11-25 20:32:52 1458

原创 Android类加载器和热修复原理

Android ClassLoader学习笔记Activity Context 使用的加载器类型ClassLoader简单说明BootClassLoader简单说明PathClassLoader简单说明DexClassLoader 简单说明热修复的核心原理Activity Context 使用的加载器类型因为项目中用到了阿里云的热修复框架,所以就简单的看了下热修复相关的资料。里面涉及到ClassLoader相关的知识,于是乎就查看其源码了解了一波。于是乎有了这篇学习笔记,在这里先推荐一个看android

2021-11-20 13:49:37 1946

原创 android jarsigner: 找不到.keystore的证书链

使用Java SDK给android apk打包的步骤:1、cmd定位到C:\Program Files\Java\jdk1.8.0_241\bin 目录2、为了方便将demo.keystore放在了C:\Program Files\Java\jdk1.8.0_241\bin目录下。3、开始使用jarsigner命令签名jarsigner -verbose -keystore demo.keystore -signedjar after_signed.apk before_sign.apk demo

2021-11-19 14:07:32 1980

原创 Flutter音频播放插件just_audio入门指南

just_audio使用指南简介AudioSource简介对AudioPlayer的控制添加headders添加http user agent剪辑音频控制进度和声音播放状态的监听播放进度的监听播放音频时APP推到后台当音频被打断时的处理简介just_audio是一款功能丰富的音频播放器,适用于Android、iOS、macOS和web。从官方提供的图就可以看出其功能的丰富性。比如可以控制播放声音,控制播放速度,监听播放进度等等。(本篇博文基本都是翻译自just_audio,所以可以直接点击just_a

2021-11-09 19:40:11 5036 3

原创 Java并发编程实战之基于生产者消费者模式的日志服务读书笔记

public class LogService { private final BlockingDeque<String> queue; private final LoggerThread loggerThread; public LogService(PrintWriter writer) { queue = new LinkedBlockingDeque<>(); loggerThread = new LoggerThr

2021-11-06 16:59:58 322

原创 java并发编程实战读书笔记 ExecutorCompletionService

当我们向Executor提交一组任务,并且希望任务在完成后获得结果,此时可以考虑使用ExecutorCompletionService。ExecutorCompletionService实现了CompletionService接口。ExecutorCompletionService将Executor和BlockingQueue功能融合在一起,使用它可以提交我们的Callable任务。这个任务委托给Executor执行,可以使用ExecutorCompletionService对象的take和poll方法获

2021-11-01 10:35:13 243

原创 java并发编程实战读书笔记之FutureTask

在《Android AsyncTask源代码浅析》一文中介绍了Android AsyncTask的原理,里面也初步介绍了FutureTask的使用方法。在创建Future的时候,根据其构造器来看需要传一个Callable对象,其构造器如下。 public FutureTask(Callable<V> callable) { this.callable = callable; this.state = NEW; // ensure visib

2021-10-31 22:30:29 1177

原创 Flutter实战之Flutter应用生命周期 AppLifecycleState浅析

通过本篇博文你可以了解到1、Flutter APP 生命周期涉及到哪几种状态?2、如何监听Flutter应用的状态变化?1、Flutter APP 生命周期涉及到哪几种状态?Flutter APP的生命周期有四种状态,在AppLifecycleState这个枚举类里有定义:resumed : APP进入前台状态,比如从后台切换到前台时,APP的状态从paused切换到resumed状态,注意点击桌面图标启动APP的时候,是不会进入该状态的 ;paused : 应用进入后台时,比如按手机Home键使应

2021-10-29 13:46:38 2346

原创 Java并发编程实战读书笔记5 ---Executor在android中的应用

最近业余时间在读《Java并发编程实战》这本书,现在已经读到了第二部分。该书上有这么一段话:如果你的项目中出现这样的代码 new Thread(new Runnable() { @Override public void run() { } }).start();的话,那么你可以考虑使用Executor了这句话让我想到了我以前 在项目中对Executor做了一个小小的封装,可以当做一个小小的工具类使用。封装后可以将上面代码改成: //ExecutorType是一个枚举类,TASK_ON_PER

2021-10-28 14:59:18 206

原创 Android的TextView设置padding无效

最近在开发了一个新的功能,有如下UI样式:我采用动态代码的方式来实现的,代码如下: TextView textView = new TextView(context); textView.setTag(action); textView.setTextSize(7); textView.setGravity(Gravity.CENTER); textView.setTextColor(Color.WHITE); textView.setText("

2021-10-25 16:54:48 1090

Android ASM 代码自动化埋点

结合ASM Bytecode Viewer插件,使用ASM技术对Android 的点击事件onClick方法进行插桩。剖析Android 自动化埋点的具体实现原理。在onClick方法执行之前或者之后自动执行指定的代码,可以用来收集用户的点击操作。用来自动化埋点。

2022-04-23

线性贝塞尔曲线的说明

贝塞尔曲线的简单实现算法

2017-02-26

android SDK热修复

android jar热更新机制

2016-11-07

RxJava简单应用

RxJava的简单应用,显示应用列表以及下载文件并更新进度条

2016-06-29

自定义简单GridView

主要是通过这个小小的demo来体会一下view的测量过程

2016-04-03

模仿QQ侧滑删除

简单的应用了ViewDragHelper实现了Qq聊天工具的侧滑删除布局

2016-03-09

QQ侧滑简单实现

2016-03-08

ViewDragHelperDemo

用ViewDragHelper简单的写的测试demo,说明了 clampViewPositionVertical等callback方法的应用

2016-03-04

Scroller简单应用

简单的用Scroller+layout来实现ImageView的平缓移动

2016-02-22

自定义跑马灯次数

实现了TextView控制跑马灯的次数的效果

2016-02-18

控制跑马灯次数的TextView

可控制跑马灯次数的自定义TextView

2016-02-18

自定义导航栏(2)

对之前的版本做了简单修改,丰富了ViewFlipper做导航页面的效果

2016-01-21

自定义ViewFlipper

对ViewFlipper功能做了扩展,响应左右滑动事件进行翻页

2016-01-20

ViewAnimator简单实现PPT

ViewAimator简单实现ppt页面切换效果

2015-12-15

ViewFliper简单实现PPT

用ViewAnimator简单实现了类似ppt页面切换的效果,很简单的代码

2015-12-15

Gson解析流程图

Gson解析流程图,详细的描述了Gson反射机制的解析流程

2015-10-22

自定义横向listView4.0

解决了版本3.0的遗留的问题,并对解决方法尽可能进行了详尽的描述

2015-06-04

自定义横向listView3.0

可左右滚动的横向listView,listView随着手指的移动而移动

2015-06-02

横向的listView version2

在版本1.0的基础上实现了点击滚动的功能,很简单的代码,更过功能在3.0实现

2015-05-20

水平ListView小demo

简单的实现了水平的lsitView,初学者可以看看,大神们可以提点建议

2015-05-17

大风车系列demo

android 自定义View模拟风车旋转的小demo

2015-05-04

坦克大战小游戏

自己做的坦克大战,虽然设计不是怎么合理,还算凑合

2011-11-28

桌面弹球游戏代码以及个人总结

这是我自己写的总结,不是很好,但还凑合,希望对大家有帮助

2011-07-12

控制台简易五子棋java代码

这是java实现的五子棋代码,对于初学者来说很有用

2011-04-28

比较好的Java学习网站

里面是一些学习Java的个人认为比较好的网站,可以利用一下

2010-06-28

空空如也

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

TA关注的人

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