- 博客(1680)
- 资源 (224)
- 问答 (1)
- 收藏
- 关注

转载 Git使用规范(Android版)
引言本文根据Git分支管理策略,结合Git Flow分支管理实践,制定了这个适合Android开发中的Git版本管理规范。同时结合实际操作演示了使用示例,希望对你有所帮助。1. 各分支简介下面分支中提到的的 version 应该替换为具体的版本,name 应该替换为具体的开发人员姓名,content 应该替换为需要优化的地方。master分支git的默认分⽀,主分支,不...
2019-08-22 14:55:16
2493
7

转载 不是人人都懂的学习要点
http://www.cnblogs.com/watsonyin/archive/2012/10/22/2734741.html学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 一.学习也是一种能力看到这个标题,有人会说:“学习,谁不会?”的确,学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。
2012-12-12 15:54:05
7482
11

转载 一个三流学校程序员的奋斗
文章是转载的,我不是一个毅力很强的人,总得一些激励人的文章来激励自己 我也在一个三流的学校,在找有关考研的文章的时候看到这篇文章觉得不错,不敢独享,拿出来共勉…… 看完后我又一次明白,勤能补拙,一个人的成功,往往在于坚持没有挫折,不经历艰难的日子,就没有美好的明天……忘了是谁说的:当你感觉到艰难的时候,正是你在走上坡路的时候
2012-06-08 14:47:26
9938
19
原创 Flutter 单线程模型保证UI运行流畅
好了,今天关于 Dart 的异步与并发机制、实现原理的分享就到这里了,我们来简单回顾一下主要内容。Dart 是单线程的,但通过事件循环可以实现异步。而 Future 是异步任务的封装,借助于 await 与 async,我们可以通过事件循环实现非阻塞的同步等待;Isolate 是 Dart 中的多线程,可以实现并发,有自己的事件循环与 Queue,独占资源。Isolate 之间可以通过消息机制进行单向通信,这些传递的消息通过对方的事件循环驱动对方进行异步处理。
2023-07-19 19:56:29
1827
2
转载 一次Binder通信最大可以传输多大的数据?
在第六章中,我通过匿名共享内存的方式解决Binder通信是无法传递大数据的问题,一次Binder通信最大可以传输是1MB-8KB(PS:8k是两个pagesize,一个pagesize是申请物理内存的最小单元)但是这个答案对不对呢,我只能说不准确,接下来我们来仔细研究一下。
2023-04-20 21:38:17
1083
转载 Flutter渲染之Widget、Element 和 RenderObject
上面通过源码讲解了一下 Widget、Element、RenderObject 的联系。下面简单来个总结。我们写好 Widget 树后,Flutter 会在遍历 Widget 树时调用 Widget 里面的 createElement 方法去生成对应节点的 Element 对象,同时 Element 里面也有了对 Widget 的引用。
2023-04-04 12:10:48
1086
1
转载 Android系统启动流程
init进程是Android系统中用户空间的第一个进程(pid=1),它是用户进程的鼻祖,负责孵化各种属性服务、守护进程也包括非常重要的Zygote。init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init。本文将基于Android7.0源码来分析Init进程。二。
2023-03-27 01:38:01
1506
原创 Android OkHttp面试题汇总
首先来看一个最简单的 Http 请求是如何发送的。复制.build()})这段代码看起来比较简单,OkHttp 请求过程中最少只需要接触 OkHttpClient、Request、Call、 Response,但是框架内部会进行大量的逻辑处理。所有网络请求的逻辑大部分集中在拦截器中,但是在进入拦截器之前还需要依靠分发器来调配请求任务。关于分发器与拦截器,我们在这里先简单介绍下,后续会有更加详细的讲解分发器:内部维护队列与线程池,完成请求调配;拦截器:五大默认拦截器完成整个请求过程。
2023-03-26 00:42:37
1431
1
转载 Android Context 是什么?
至此,一个Android应用可能创建Context的地方基本分析结束。所有有关创建Context对象的地方都是在ActivityThread类中,该类就是整个应用的入口,也是整个应用的主线程。每个应用首先会创建一个Application对象,且一个应用只有唯一一个Application对象,之后再根据需求创建Activity或者Service。且在创建Activity或者Service的时候都会持有一份当前应用的Application对象,通过getApplication方法即可获得。
2023-03-23 21:35:07
951
转载 看图学会RecyclerView的缓存复用机制
我们继续保持向上滑动的手势,此时,由于下一个待进入屏幕的列表项与position=0的列表项的itemType相同,因此我们可以在走到从mRecyclerPool查找合适的ViewHolder对象这一步时,根据itemType找到对应的ArrayList,再取出其中的1个ViewHolder对象进行复用,即图中的情况①。另外,随着position=1的列表项重新进入屏幕,position=7的列表项也会被移出屏幕,该位置的列表项同样会进入mCachedViews,即RecyclerView是双向缓存的。
2023-03-22 20:02:31
899
原创 RecycleView相关面试题
四级缓存和流程说一下。滑动10个,再滑回去,bindview可以是19次调用,可以是16次调用。缓存的其实就是缓存item的view,在Recycleview中就是viewholder。cachedView就是mCacheViews缓存区中的view,是不需要重新绑定数据的。本文是本人学习RecyclerView的ViewHolder回收复用的过程记录,仅为自己复习时使用。大家在使用RecyclerView时都会创建自己的Adapter并重写相关的方法。//创建ViewHolder。
2023-03-22 17:05:49
1302
转载 Flutter/Dart的HashMap
总体来说Dart的HashMap和LinkedHashMap实现还是比较简单的,并没有像jdk一样做一些细致的优化工作,这可能有待于Dart/Flutter的进一步发展吧。但我们也能看到不论是何种语言,一些基础的数据结构其设计思想都是相通的。
2023-03-20 00:36:43
888
原创 HashMap扩容为什么每次都是之前的2倍
HashMap的底层是通过数组+链表+红黑树的数据结构来存放数据的。我们知道,当新添加元素的key值出现了hash碰撞,就会在同一个bucket中形成链表或者红黑树。当键值对的数量超过阈值时就会扩容,将以前处于同一个链表或者红黑树上的元素打散,在新数组的 bucket 上进行重新分布。当HashMap在初始化没有指定容量的情况下,首次添加元素时,数组的容量为16;当超出阈值,数组容量为扩容为之前的2倍。那么问题来了,为什么HashMap会将首次初始化容量设置为16,而后续每次扩容都是之前的2倍?
2023-03-16 22:19:37
1102
转载 dubbo的SPI应用与原理
本篇简单分别介绍了 Java SPI 与 Dubbo SPI 用法,并对 Dubbo SPI 的加载拓展类的过程进行了分析。同时分析了Dubbo AOP的实现原理。如果文章中有错误不妥之处,希望大家指正。举例。
2023-02-28 13:34:17
477
转载 ServiceLoader使用看这一篇就够了
想要实现上面的需求,首先要知道拦阻这个需求实现的问题,然后把这些问题都解决了,需求自然也就实现了。上面说了,正常情况下会那样输出,但是你运行程序你就会发现,马丹,怎么不起作用啊,我哪里做错了,都是按照文章步骤来做的。在ServiceLoader.load的时候,根据传入的接口类,遍历META-INF/services目录下的以该类命名的文件中的所有类,并实例化返回。最简单的方法,把资源下的META-INF文件夹拷贝到build目录下,然后再运行,发现可以了,这也就验证了,确实是这个问题造成的。
2023-02-27 22:54:04
585
转载 Android 内存缓存框架 LruCache 的实现原理
大家好,我是小彭。在之前的文章里,我们聊到了 LRU 缓存淘汰算法,并且分析 Java 标准库中支持 LUR 算法的数据结构 LinkedHashMap。当时,我们使用 LinkedHashMap 实现了简单的 LRU Demo。今天,我们来分析一个 LRU 的应用案例 —— Android 标准库的 LruCache 内存缓存。
2023-02-27 18:35:24
596
转载 关于sublime打开文件有.dump后缀的解决方法
当打开一个非utf-8格式且包含汉字的文件时,sublime会自动生成一个dump文件,文件修改过程中,不会修改原文件,只有按"保存"了才会将dump的数据更新到原文件里,关闭当前编辑的dump文件则会自动删除dump文件。中文文件由gbk编码,刚安装的sublime不支持转码, 所以会有GBK Support 插件解决这个问题,但是这个插件不是很好,插件的副作用(.dump文件生成)我们需要换换一个插件 ConvertToUTF8,同样解决这个问题,而且没有副作用,安装方法如下。
2023-02-21 20:58:21
381
转载 BitmapPool 了解吗?Glide 是如何实现 Bitmap 复用的?
以上就是 Glide 中 Bitmap 复用的原理,希望本文对你有所帮助!
2023-02-19 01:08:47
491
转载 Android Glide源码解析
源码方面主要从最基本的三个方法入手:with,load,into。Glide.with可以看到,每个重载方法内部都首先调用getRetriever()方法获取一个RequestManagerRetriever对象,然后调用其get方法来返回RequestManager。传入getRetriever()的参数都是Context,而RequestManagerRetriever.get()方法传入的参数各不相同,所以生命周期的绑定肯定发生在get方法中。下面,接着分析getRetriever()方法。
2023-02-19 00:17:40
414
转载 Android ANR详解
然后InputDispatcher开始了第一轮的事件分发,此时并没有正在处理的事件,因此InputDispatcher从inBoundQueue队列头部取出事件,并重置ANR的计时,并检查窗口是否就绪,此时窗口准备就绪,将该事件转移到了outBoundQueue队列中,因为应用管道对端连接正常,因此事件从outBoundQueue取出,然后放入了waitQueue队列,因为Socket双向通信已经建立,接下来就是 应用进程 接收到新的事件,然后对其进行分发。
2023-02-18 14:14:03
830
转载 谨慎使用多线程中的fork
因为子进程继承的是父进程的锁的拷贝,所有上述并不是解锁了两次,而是各自独自解锁。context是由程序正确运行所需的状态组成的,这个状态包括存放在存储器中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器(PC)、环境变量以及打开的文件描述符的集合。在大多数操作系统上,为了性能的因素,锁基本上都是实现在用户态的而非内核态(因为在用户态实现最方便,基本上就是通过原子操作或者之前文章中提到的memory barrier实现的),所以调用fork的时候,会复制父进程的所有锁到子进程中。
2023-02-14 13:50:53
171
转载 android启动优化-异步启动框架Alpha完全解析
分析下来,这个异步启动框架应该算比较简单的,但是能解决问题啊!其实我们平时工作中也可以做一些积累,然后写成工具或者框架,如果能开源出来大家一起使用还真是一件不错的事情呢!
2023-02-14 00:09:11
392
转载 Android启动优化深入解析,全面掌握!
AOP简介:Aspect Oriented Programming,面向切面编程针对同一类问题的统一处理无侵入添加代码AspectJ简介:它就是辅助AOP用来实现切面编程//工程目录下的build.gradle//app module目录下的build.gradle添加完了依赖之后,再来介绍一下相关知识点,然后我们再到代码中去真正的使用它。Join Points:程序运行时的执行点,常用的可以作为切面的地方如下所示:函数调用、执行获取、设置变量类初始化。
2023-02-13 22:46:07
337
原创 面试题:android中A Activity 打开B Activity,为什么A Activity的onStop()方法最后被调用
当用户触发某事件切换到新的Activity,用户肯定是想尽快进入新的视图进行操作,上面已经说了,在onResume()一般会打开独占设备,开启动画等,当需要从AActivity切换到BActivity时,先执行AActivity中的与onResume()相对应的onPause()操作,比如关闭独占设备,关闭动画,或其它耗费cpu的操作;2、onPause() 的注释中,也明确地说了,在这个方法中执行停止动画等比较耗CPU的操作,如果不先执行这些操作,就先启动新应用,然后再来执行此操作,确实是不合逻辑;
2023-02-13 14:08:02
522
转载 Android性能优化之启动速度优化
文本主要会介绍三大块:1.简略介绍APP启动的完整流程,对整个流程有所了解,才知道在哪里可以进行优化。2.一些常用的APP启动优化的方案,主要分为三大块优化方向。3.一些不常见的APP启动优化的方案,甚至包含一些FW层的代码改动,有的可能是对应用开发者无效的,但是对于车载开发是有用的。
2023-02-11 16:13:10
969
转载 移动端防抓包实践
通讯安全是App安全检测过程中非常重要的一项针对该项的主要检测手段就是使用中间人代理机制对网络传输数据进行抓包、拦截和篡改,以检验App在核心链路上是否有安全漏洞。保证数据安全通过charles等工具可以对app的网络请求进行抓包,这样这些信息就会被清除的提取出来,会被不法分子进行利用。不想被竞争对手逆向抓包不想自身App的数据被别人轻而易举地抓包获取到,从而进行类似业务或数据分析、爬虫或网络攻击等破坏性行为。
2023-01-13 17:02:16
826
原创 flutter中好用的Widget-CupertinoPicker
因为城市选择的数据是从服务器上拿的的,在pub上面也没有找到合适插件,索性就自己写了一个,在写的过程也遇到很多问题,其实就是三个 CupertinoPicker 组合在一起的,当时写的过程中发现 CupertinoPicker setState不更新 以及onSelectedItemChanged 调用的问题。
2022-12-02 00:05:09
3483
2
转载 Dart 运算符重载
在软件开发过程中,运算符重载(英语:operator overloading)是多态的一种。运算符重载通常只是一种语法糖,这种语法对语言的功能没有影响,但是更方便程序员使用。让程序更加简洁,有更高的可读性。
2022-11-29 23:30:58
707
转载 flutter入门之dart中的并发编程、异步和事件驱动详解
在java开发中,我们进行并发编程的时候,经常会使用future来处理任务,获取返回的结果,或者延迟处理任务等操作,而在dart中,我们执行一个任务同样也可以使用future来处理,而Future默认情况下执行的是一个event-queue任务,也就是和我们正常执行的业务逻辑一样的任务级别,然而future提供了多个api和特性来完成任务队列的使用,例如我们在js开发的时候经常使用ajax的then函数进行回调,then中的参数即为当前任务执行完的参数,我们可以在。isolate自身的任务又是如何处理的?
2022-11-28 15:59:56
929
转载 Flutter 工程化框架选择——搞定 Flutter 动画
在之前的Flutter 小技巧: 用于控制动画启动、暂停: 用于创建所需的vsync参数,一般最常使用Animation: 用于处理动画的 value ,例如常见的接收动画的对象:例如这种写法如下代码所示,我们一般可以称为显式动画(不要纠结名词叫法),大致特征就是:以 *Transition命名,比如、和等,需要我们自己定义和操作。);}}复制代码也就是开箱即用,常见是 Animated*开头的 Widget,例如、、、
2022-11-28 00:13:42
819
原创 Flutter 进度条
但是很多APP的设计都按照Material Design风格来玩的,各种各样的都有,我们选择最常见的一种来看一下,下面是“淘宝APP->淘抢购”页面里面的进度条,还是带动画的。为进度条的里面配置描述文本,和上面一样,就是继续包装(PS:Flutter的布局方式真的是过度包装),用堆栈()组件去做,是没办法实现上面的进度条的。在上面的代码中,我们已经设置好了动画与补间,下面就把线性进度条(但是上面的问题都可以被解决,下面就是具体的解决方案了。)组件,就是下面的样子,方方正正的,一点也不圆润。
2022-11-27 23:54:25
2290
转载 flutter图片压缩库对比
flutter_luban方法调用起来也比较简单,先将需要压缩的图片封装到CompressObject类中,然后调用Luban.compressImage既可。);// _path为压缩后图片路径});然后来看下compressImage方法的具体实现}然后就是调用到了_lubanCompress这个方法。从这个方法可以看出,flutter_luban只支持jpg和png格式的图片压缩,然后基本的步骤为图片的宽高进行的一系列的计算和校验。
2022-11-27 23:42:45
1331
1
原创 flutter useRootNavigator属性的作用
用于确定是否将对话框推到距给定上下文最远或最接近给定上下文的Navigator问题:在使用showDatePicker的时候,android手机如果侧滑返回的时候,页面会关闭,showDatePicker弹出的dailog缺没有关闭。方法显示一个包含日期选择器的对话框。当用户关闭对话框时,返回的Future解析为用户选择的日期。如果用户取消对话框,则返回null。怎么在页面关闭的时候关闭dialog呢?将useRootNavigator置为false即可。
2022-11-27 23:27:13
868
转载 Flutter 学习 之 图片的选择、裁切、保存
这里我选择的是image_picker优点官方出品的插件可以直接调用相册和相机无需提前申请权限可以多选和单选选择丰富缺点多选需要长按没有明显的提示。
2022-11-27 23:15:04
2406
转载 Flutter ShowModalBottomSheet 自定义高度和滚动
这是一个官方的组件 但是两个滑动在一起会有冲突简单的实现了一下滑动到头自动收起这个组件。
2022-11-27 23:03:01
2302
原创 Flutter自定义对话框返回相关问题汇总
我这里是禁掉返回按钮,当然也可以在这里做一下其他操作,比如连续点击两次返回,又或者连续pop两次把dialog和页面一起返回掉。
2022-11-27 22:54:50
1014
Android将list数据通过LitePal保存到本地(集合保存到本地)
2016-06-17
AndroidDownLoad-多线程断点续传下载
2016-06-14
DownloadEngine-Android多线程下载断点续传
2016-06-14
android-rsa-http
2016-06-12
RxJava在Android中内存泄漏解决以及RxJava的封装
2016-05-23
Android H5做的商城客户端
2016-04-29
Android通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
2016-03-31
Android Bluetooth蓝牙通信文件传输
2016-03-27
Android蓝牙聊天程序的扩展开发(基于Google Sample,类QQ设计)
2016-03-26
Android蓝牙聊天程序优化版
2016-03-26
Android 通过Socket 和服务器通讯
2016-02-16
android RangeSeekBarView 选定范围值的控件
2016-02-01
Android仿天天动态上拉播放界面控件
2016-01-31
Flutter编程指南-多线程
2022-02-21
java数据结构与算法之美(物超所值)
2022-02-09
flutter_macos_2.8.1-stable.zip
2022-01-05
mac_apktool.zip
2021-03-25
Postman-osx-5.3.2 for Mac
2017-10-31
CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar
2016-08-19
android自定义进度条渐变色View的实例代码
2016-07-26
Android多行文本折叠展开效果
2016-07-25
Android封装popwindow类(下拉菜单弹出和收缩效果)
2016-07-22
Android自定义spinner下拉框
2016-07-16
Android DigitalClock实现倒计时
2016-07-12
Android 带箭头有光晕效果的ProgressBar
2016-07-04
android webview与 js交互通信
2016-06-20
Android项目webview中做与js交互
2016-06-20
Android客户端提供Socket服务与pc通过USB通信
2016-06-17
Android 使用Socket,ServerSocket编程网络通信
2016-06-17
Android socket即时通信Demo
2016-06-17
自定义view和自定义动画怎么学习比较好呢?
2016-11-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人