自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fukaiqiang

越努力越幸运

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

原创 linux ubuntu Unable to locate a development device; please run 'flutter doctor' for information

0. 序言配置环境这种小事,看似小,有时候还是很浪费时间的,我这里是Ubuntu操作系统,Mac Os和Windows相似,参考下也能很快配置好。1. 问题首先下载好了Flutter的SDK,然后在AndroidStudio上安装好了Flutter和Dart的插件,JDK也配置好了,重启,创建Flutter项目,运行报以下错误:Unable to locate a development...

2019-03-15 17:21:05 3773

原创 解决 Unable to resolve dependency for ':app@debug/compileClasspath 问题

0. 序言可能你比较快就解决了标题上的问题,但是对于我来说搞了两个小时,才解决。希望我这篇文章能让你更快的解决这个问题,把工作重点放在开发上。1. 问题所在当我创建一个默认项目后,我想导入以下代码:implementation 'com.squareup.okhttp3:okhttp:3.13.1'但是我发现报了标题中的错误,而我打开VPN(并非AndroidStudio的代理),却...

2019-03-13 14:07:20 14762 2

原创 LruCache-实现内存缓存的优秀算法

1. 基本概念LRU是计算机科学经常使用的一种近期最少使用算法。2. 核心思想当缓存满时,会优先淘汰那些近期最少使用的缓存对象。3. 具体原理LruCache是一个泛型类,它内部采用的是一个LinkedHashMap以强引用的方式存储外界的缓存对象,其提供了get和put方法来完成缓存的获取和添加操作,当缓存满时,LruCache会移除较早使用的缓存对...

2018-03-30 10:26:04 799

原创 Bitmap-让图片加载更高效

0. 效果图1. 基本概念Bitmap(位图)是Android系统中图像处理最重要的类之一。Bitmap可以获取到图片的信息:高和宽的像素值以及总的像素值、alpha像素值等。Bitmap获取到图片信息后,可以对其进行裁剪、缩放等操作。Bitmap可以通过一个Bitmap创建新的Bitmap。总之:Bitmap为我们程序员提供了对图像文件的操作支持。(就像File类为我们提供...

2018-03-04 14:53:17 535

原创 Genymotion-Android开发效率提高必备工具

0. 序言模拟器浪费时间?真机不浪费时间?实则优秀的模拟器不但不浪费时间,反而节省时间;有些真机还真的浪费时间,不举例实在太多类型的。真机的不便之处举例: oppo R11 debug模式无法正常编译安装,每次安装需要输入oppo 密码;vivo每次编译运行还必须页面点击安装才能正常编译运行,等等。最好的办法就是用Gnenymotion模拟器开发,用真机后期做适配开发。1. 下...

2018-02-22 15:54:00 438

原创 Freeline让AndroidStudio编译飞起来

0. 序言Android项目随着需求的增多,整个体积越来越大,AndroidStudio编译越来越慢!少则几分钟,多则十几分钟!为了提高效率,早下班,Freeline绝对是Android开发者的必备利器!今天周末,大家周末愉快!1. Freeline是什么Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品!2. Freeline

2018-02-04 10:42:23 515

原创 Java基础之反射

0. 序言这里只讲解关于反射的基础知识,以后会补充更多的扩展知识,毕竟是基础系列。1. 类的加载概述当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。加载 就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。连接 验证 是否有正确的内部结构,并和其他类协调一

2018-01-28 17:27:16 268

原创 自定义控件之带进度的横向和圆形进度条

0. 效果展示1. 为什么要自定义控件特定的显示风格(适用于进度条)处理特有的用户交互优化布局封装等2. 如何自定义控件自定义属性的声明和获取测量onMeasure布局onLayout (ViewGroup)绘制onDrawonTouchEvent (处理交互)onInterceptTouchEvent(ViewGroup 拦截事件)状态的恢复与保存

2018-01-21 23:06:59 673

原创 VideoView实现安卓视频播放

1. VideoView简介Android实现视频播放主要是使用VideoView类来实现的。VideoView背后是使用MediaPlayer来对视频文件进行控制的。只支持mp4、avi、3gp格式的视频,支持格式单一。2. VideoView常用方法:setVideoPath:设置要播放的视频文件的位置start:开始或继续播放视频pause:暂停播放视频res

2018-01-07 17:26:07 2316

原创 2017年终总结

今天是2017年12月31日,也就是2017年的最后一天,回顾过去,展望未来。

2017-12-31 17:27:17 484

原创 不得不看的Python入门知识

Python入门,不得不看的知识点。

2017-12-27 14:22:41 817

原创 AndroidStudio快捷键和自定义模板

本篇博客列举了Android开发人员应该熟练掌握的快捷键以及如何自定义模板并举例说明。

2017-12-04 00:56:22 882

原创 PermissionsDispatcher

本篇文章介绍了PermissionsDispatcher框架的使用方法。它是我用过代码解耦最好的关于6.0运行时权限的封装。

2017-12-02 16:31:34 309

原创 源码分析Activity的构成

从源码的角度,一步步剖析了Activity的构成。

2017-11-19 15:22:24 347

原创 View之View树View坐标系View滑动

本篇博客主要讲解了View之View树View坐标系View滑动三个方面。

2017-11-19 08:57:35 476

原创 Scroller

这篇博客详细介绍了Scrollder的实现、解析和原理,阅读后会让你对Scroller乃至整个View体系有一个更好的了解和认知!

2017-11-18 22:49:58 321

原创 Android帧、补间、属性动画

这篇博客介绍了Android中动画的帧动画、补间动画、属性动画。至于VectorDrawable(Android5.0)后期会单独更新博客讲解。

2017-11-16 17:54:40 347

原创 单例模式

详细讲解了单例模式,希望通过阅读整片博客,能让大家对单例模式有一个清晰完整的了解和认识。

2017-11-07 22:49:32 269

原创 Activity

详细介绍了Activity,至于没有讲到的,后期会补上,希望能帮助阅读者对Activity有一个全面清晰的认识和理解。

2017-11-05 16:36:50 396

原创 RecyclerView常用功能解析

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请注明出处:http://mp.blog.csdn.net/mdeditor/index/783971741. RecyclerView常用功能普通的上下滑动和左右滑动Grid效果上下滑动和左右滑动瀑布流的上下滑动和左右滑动添加分割线去除最后一个item的分割线添加点击事件增加和删除item添加动画

2017-10-30 20:47:53 1552

原创 Android中WebView或者网络请求实现动态全局代理

Android实现网络请求和WebView全局代理!

2017-10-24 14:12:30 7596 3

原创 单一职责原则

详细讲解了单一职责原则定义、优缺点、栗子、进阶,值得阅读理解。

2017-10-10 13:53:25 330

原创 This Activity already has an action bar supplied by the window decor

This Activity already has an action bar supplied by the window decor的问题所在以及解决方法。

2017-10-08 08:56:33 268

原创 Service

这篇文章讲解了关于普通服务、前台服务、后台服务、服务的生命周期以及关于服务完整的栗子,看完后能对服务有一个完整的认识,希望读完能让你有所收获。

2017-09-30 00:05:08 335

原创 Notification

本篇博客介绍了关于通知的使用方法,看完后能对通知有一个完整的理解和认知。

2017-09-26 17:18:23 418

原创 FragmentManager is already executing transactions

FragmentManager is already executing transactions 的问题所在以及出现场景和解决办法

2017-09-24 10:45:55 1069

原创 Android 6.0+ 实现白色状态栏(白底黑字)

Android 6.0+ 实现状态栏白底黑字,效果很酷,不妨一试!

2017-09-13 15:53:20 6495 1

原创 C++ inline 内联函数

inline 函数是 C++ 中通过 减少函数调用开销 优化程序效率的机制。类型安全问题:宏仅进行文本替换,无法进行参数类型检查,可能导致隐式错误。作用域限制:宏无法直接访问类的私有/保护成员(因无法处理 this 指针)。调试困难:宏展开后与代码逻辑分离,难以调试。inline 函数通过 编译时直接展开函数体 实现高效性,类似于宏的替换,但保留了函数的类型检查、作用域控制等特性。

2025-05-21 19:47:24 935

原创 C语言中的弱符号 __attribute__((weak)) 的使用方法

以下是一个脱离的极简 C 语言示例,通过 弱符号覆盖 和 运行时检查 两个场景,展示。

2025-05-21 10:53:41 544

原创 Android BpBinder trackedValue 的设计逻辑

​​LIMIT_REACHED_MASK​​(最高位):0x80000000(二进制 10000000 00000000 00000000 00000000),表示代理数超过高水位线(如 2500)。​​WARNING_REACHED_MASK​​(次高位):0x40000000(二进制 01000000 00000000 00000000 00000000),表示代理数达到警告水位线(如 2250)。​​COUNTING_VALUE_MASK​​(低 30 位)

2025-05-09 12:26:59 660

原创 Android 位掩码操作(&和~和|的二进制运算)

​​&​​:用于 ​​提取​​ 或 ​​清除​​ 特定位(如权限检查)。​​​​|​​:用于 ​​合并​​ 多个状态(如组合标志位)。​​​​~​​:生成反码,常与 & 配合 ​​清除位​​(如撤销权限)。位掩码通过直接操作二进制位实现高效内存利用和快速计算,是 Android 底层优化的核心手段之一。

2025-05-08 21:54:19 503

原创 Android 如何理解 Java JNI 中的引用与 Java 对象应用的区别

Java JNI 中的引用是 ​​本地代码与 JVM 对象交互的句柄​​,其本质是对元数据或对象访问权限的封装,允许在对象实例化前初始化(如类元数据);而 Java 中的对象引用是 ​​直接指向堆内存的实例指针​​,必须在对象创建后生效。理解两者的区别,有助于避免 JNI 开发中的内存泄漏和性能问题。

2025-05-07 21:56:40 584

原创 Android BinderInternal.getContextObject()

BinderInternal.getContextObject() 的调用流程

2025-04-29 11:45:21 215

原创 Android ioctl 第二个参数命令码以及BINDER_FREEZE示例

宏定义了命令码中各字段的二进制偏移量,用于将不同参数定位到命令码的特定位置2. _IOC_TYPECHECK此宏用于验证数据类型的大小是否合法,并生成数据大小字段的值计算数据类型 t 的大小(通过 sizeof)。确保数据大小不超过 14 位能表示的最大值(即 16383 字节)。通过 _IOC 宏将各字段组合为最终的命令码4. BINDER_FREEZE1. 命令定义分解2. 命令码的二进制结构一个 ioctl 命令码是 ​​32位整数​​,按以下分段:所谓幻数就是类型的意

2025-04-25 14:13:50 461

原创 Android killPackageProcessesLSP 源码分析

【代码】Android killPackageProcessesLSP 源码分析。

2025-04-24 20:29:27 226

原创 C++ 拷贝构造函数 浅拷贝 深拷贝

拷贝构造函数的​​参数为本类对象的常量引用​​,格式为 ClassName(const ClassName &src)。若未显式定义,​​编译器会自动生成默认拷贝构造函数​​,执行​​浅拷贝​​(逐成员复制值)。

2025-04-22 21:24:05 924

原创 C++ 显式转换运算符(explicit operator)

​​显式转换运算符​​通过 explicit operator TargetType() 声明。阻止隐式转换​​,但允许在条件判断等上下文中隐式调用。​​核心目的​​:让类型转换的意图更明确,避免意外行为。适用场景​​:需要严格控制的类型转换(如资源状态检查)。

2025-04-22 10:50:59 332

原创 C++ 什么是隐式类型转换,什么是显式类型转换

​​隐式转换​​是编译器的“自动行为”,方便但可能隐藏问题。​​显式转换​​是程序员的“主动行为”,安全但需要更多代码。

2025-04-22 10:09:56 435

原创 C++ explicit

explicit 是 C++ 中的一个关键字,用于​​阻止隐式类型转换​​。​​构造函数​​:防止编译器通过该构造函数进行隐式转换。​​转换运算符​​(C++11 起):防止通过类型转换运算符的隐式转换。核心作用​​:强制显式类型转换,避免隐式转换的潜在问题。​​代码安全​​:减少因类型自动转换导致的 Bug。代码清晰​​:让类型转换的意图更明确。通过合理使用 explicit,可以写出更健壮、更易维护的 C++ 代码!

2025-04-21 20:59:13 795

原创 Android 最简单的native二进制程序

可以在最简单的Native二进制程序里面实现更复杂的逻辑,加深对Android组件的理解。

2025-04-21 17:22:15 253

ubuntu24.04 Chrome谷歌浏览器不能输入中文

ubuntu24.04 Chrome谷歌浏览器不能输入中文

2025-04-16

空空如也

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

TA关注的人

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