- 博客(53)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一文掌握 Object 类里的所有方法(wait、notify、finalize)
本文讲解了 Object 里面的所有方法,包含常用的5个方法:getClass、hashCode、equals、clone、toString,除此之外本文重点讲解了 Object 中与线程相关的方法:wait、wait(long)、notify、notifyAll。对于线程的等待和唤醒进行了详细的讲解。最后介绍了 finalize 方法,介绍了该方法的使用方式和替代方案。
2024-06-29 13:25:47
1016
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 制作自己的 @OnClick、@OnLongClick(告别 setOnClickListener,使用注解、反射和动态代理)
本文利用注解和反射的巧妙结合,在运行时进行事件和 View 的绑定,实现一个运行时的事件绑定注解框架。以 @OnClick 和 @OnLongClick 为例,读者跟着文章一步步将实现自己的运行时的事件绑定注解。
2024-06-15 13:37:29
985
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 制作自己的 ButterKnife(使用 AutoService 和 APT 注解处理器在编译期生成 Java 代码)
本文从原理的角度介绍了 ButterKnife 的方方面面。通过阅读此文,读者可以自己制作自己的 ButterKnife,并掌握诸如 APT、AutoService、SPI 等相关概念。
2024-06-04 21:05:55
629
3
原创 一文掌握 Thread 类里的常用方法(yield、interrupted、join、daemon)
本文介绍了 Java 中的 Thread 中的一些常用方法,这些常用方法在多线程编程中极为重要。本文针对每个方法都用了不同的讲解方式,言简意赅,值得一看
2024-07-21 17:32:29
930
原创 Java基础知识之 使用 Cleaner 替代 finalize
本文介绍了Object.finalize 方法,并详细说明了这个方法替代方案:Cleaner,并通过一个完整的例子,介绍了这个方法是如何进行 Java 对象的清理工作的。
2024-07-18 23:44:12
952
原创 这可能是本年度最好用的 Dagger 使用教程 四(使用 @Builder 和 @Factory 创建依赖注入器)
本文接着前面三篇文章讲解 Dagger 中的注入器的两种创建方式 @Factory 和 @Builder,其也对应了工厂模式和建造者模式。
2024-07-16 22:51:23
376
原创 这可能是本年度最好用的 Dagger 使用教程 三(依赖注入器的依赖、子组件、Lazy、Provider)
在上一个文章中,我们介绍了 Dagger 中的限定和范围注解,现在我们将视线转移到依赖注入器来,先介绍这个组件的依赖的两种方式,再介绍两个常用的类型。
2024-07-15 09:46:50
1506
原创 这可能是本年度最好用的 Dagger 使用教程 二(限定注解 @Named、@Qulifier 和 范围注解 @Singleton、@Scope)
本文紧接着上一篇 Dagger 的基本使用,介绍了 Dagger 中的限定注解和范围注解这两个概念,并演示了其注解的使用方法。
2024-07-14 10:55:30
839
原创 Java 基础知识之 依赖注入(Dependency Injection)
本文介绍了在 Java 开发中常用的 依赖注入 设计模式的基本概念,并演示了使用和不使用依赖注入时代码的区别及影响,详细说明了依赖注入的4种方式,最后介绍了几个常用的依赖注入框架。
2024-07-05 23:29:00
1009
原创 Java 基础知识之 switch 语句和 yield 关键字
本文讲解 Java 中 switch 关键字的用法,包括其传统用法和 Java 12 之后新添加的 switch 表达式,并演示了 yield 关键字。
2024-07-03 23:17:50
539
2
原创 Java 基础知识之 深拷贝与浅拷贝(Cloneable接口、clone方法)
本文讲解 Java中深拷贝和浅拷贝的区别,并有示例演示其中区别。对于 Cloneable 接口和 clone 方法也进行了解释。
2024-07-02 09:29:34
923
原创 代理模式与静态代理、动态代理的实现(Proxy.newProxyInstance、InvocationHandler)
代理模式是23种设计模式中比较常用的一种,属于结构型设计模式。在 Android 领域中,有大量的库都使用了代理模式,例如 Retrofit 使用动态代理来实现 API 接口的调用,Dagger 使用代码生成和反射机制来创建依赖注入的代理对象等等。本文将带你了解代理模式,并且介绍静态代理和动态代理的实现方式。
2024-06-12 15:34:59
1193
2
原创 Java Reflection 反射使用 完全指南
Java 中的反射大家都不陌生,有很多很好的文章都进行了讲解,但是很难找到一篇文章能完全解释反射的所有用法,特别是反射获取这个对象的注解的信息和泛型信息,往往都停留在了获取类的函数、方法,构造上。所以这篇文章将全面讲解 Java 反射中的所有用法,特别是对于类中的注解的获取上。另外,本文章不会对反射的原理进行讲解,看完本文你应该只能学会怎么用反射,至于其原理,本文不会涉及。
2024-06-12 15:26:43
1050
1
原创 Java 和 C 中 测量代码耗时 最佳实践
测量代码耗时是在开发过程中不可避免会遇到的问题。本文讲解了在 Java 和 C 语言中常用的几种测试代码耗时的方法,简单易用,值得收藏。
2022-08-16 22:27:35
395
1
原创 Android 源代码在线查看 目录结构 不完全指南
分享几个可以在线查看Android 源代码的网站:Android 源代码官方查看网站:https://cs.android.com/;AOSPXRef 在线查看源代码:http://aospxref.com/;AndroidXRef 在线查找源代码:http://androidxref.com/;
2022-01-19 16:14:43
7211
1
原创 快速上手 TinyXML-2 不完全教程
TinyXML-2 不完全教程XML 作为程序开发中非常常用的数据文档之一,各个语言或是开发环境都有对应的用于处理 XML 文件的库。在 C++ 语言中,TinyXML-2 就是这样的一个库。TinyXML-2 是一个简单,小巧,高性能的 C++ 的 XML 解析器,它能够容易地集成到其他程序中。与 TinyXML-2 有关的两个网页如下:GitHub 主页:https://github.com/leethomason/tinyxml2在线帮助文档:http://leethomason.git
2022-01-08 16:16:42
3971
7
原创 记录 NDK JNI 的崩溃 Fatal signal 5 (SIGTRAP), code 1 in tid
在 Android 写 CPP 的代码时碰到了一个崩溃的问题,且崩溃日志只有下面的一行:Fatal signal 5 (SIGTRAP), code 1 in tid 32450后来在经过检查时才发现是由于有一个函数是定义了返回值的,但是实际上却没有返回任何东西导致的。即,JNI 函数或者使用到的 C++ 函数缺少指定的返回值。(也很纳闷为什么这种情况下编译都能过)参考了这个博文:https://blog.csdn.net/whartonyang/article/details/10692685
2022-01-05 21:03:11
2709
原创 使用 Xcode 配置 OpenGL 开发环境
前提准备在打开 Xcode 之前,我们需要准备两个库:GLFW 和 GLAD。这是开发 OpenGL 需要依赖的库,所以先看看如何准备好这两个库吧:GLFW在我们画出任何效果之前,首先要做的就是创建一个OpenGL上下文和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地将这些操作抽象出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。幸运的是,有一些库已经提供了我们所需的功能,其中一部分是特别针对OpenGL的。这些库节省了我们书写操作系
2021-01-13 20:44:36
1619
22
原创 Android 应用的版本兼容 了解一下(理解 minSdkVersion、targetSdkVersion、maxSdkVersion、compileSdkVersion)
前言总所周知,Android 适用于众多类型的设备,从手机到平板电脑和电视都能搭载使用。为了能在所有这些设备上顺利运行,Android 系统在应用到设备上时,必不可少的需要处理与 Android 应用的兼容性问题。这里就牵扯出两个概念:设备兼容性与应用兼容性。设备兼容性:设备兼容 Android 的前提是它可以正常运行针对 Android 执行环境编写的应用。应用兼容性:针对市面上千奇百怪的 Android 设备,应用是否兼容每一种可能的设备配置。对于Android 应用开发者来说 ,我们无需担
2021-01-09 17:04:25
12449
8
原创 对于 MVP 应用架构的理解及其优化改造
MVP 架构MVP架构由MVC发展而来。在MVP中,M代表Model,V代表View,P代表Presenter。Model 负责获取数据,数据的来源可以是网络或本地数据库等;View 负责界面数据的展示,与用户进行交互;Presenter 是Model与View之间的通信的桥梁,将Model与View分离开来,也是业务进行实现的地方;这三个层面之间的关系如下:我们先简单用一个简单...
2020-10-27 15:09:27
433
原创 解决方案: No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
问题描述最近在打开一个 Android 工程时,在导入到 Android Studio 后很快就会出现如下问题:问题原因这个问题的最根本原因是因为本地的 NDK 版本过高,而之前的工程在编译时使用的是老版本的 Gradle 插件,这样在打开工程进行同步时,老版本的插件会检查 NDK 中的两个工具链:mips64el-linux-android-4.9mipsel-linux-andro...
2020-03-07 14:01:49
1489
原创 入门 JNI (Android NDK 教程 二)
第一讲用一些概念来理解来原生开发能做什么,有哪些功能。那么从现在开始,就开始真正进入编码阶段了,作为 Android NDK 开发,最先需要知道的,就是 JNI 了。它是一座桥梁,是 Java 代码与 C 代码之间的桥梁,是 Android 开发通往原生开发的必要路径。因此,这一讲的主要内容就对 JNI 有一个初步的认识。初识 JNIJNI 全称是 Java Native Interface(...
2019-03-11 10:59:55
342
原创 Android NDK 简介(Android NDK 教程 一)
Android NDK 简介Android 上的 C++ 简介NDK 是什么NDK 提供的组件Android NDK 的目录结构Android NDK 构建系统所提供的功能Android 上的 C++ 简介这是 Android NDK 开发的第一篇文章,内容当然都是一些简单的概念性的问题。但是像 SDK 安装,环境变量配置什么的,也都是大家应该懂的内容,这里就不在赘述了。后面将会对 Andro...
2019-03-07 21:03:13
836
原创 Android上最简单的IPC方案——Messenger
每个系统都会有相应的 IPC 机制以方便开发者来进行进程间通讯,Android 中有6中IPC机制。这6种方式各有各的优缺点和适用场景,在开发过程中最合适当前需求的才是最好的。至于它们各自适用场景此处就不详述了。今天主要来讲一讲这几种机制中最简单的一个 Messenger
2017-10-15 11:59:47
1316
1
原创 OkHttp接入HttpDNS,最佳实践
DNS(Domain Name System)即域名解析系统,这个东西说对于开发者来说,应该是没有不知道的。说简单点,这个系统的作用就是将域名解析成IP地址。我们的每一次网络请求,如果是使用域名,那么就是进行域名解析。一个优秀的域名服务应该能够满足两点要求,一个是能够正确的返回IP地址,二就是能够根据网络情况返回所请求的域名最近的服务器IP。
2017-10-14 19:15:20
3728
2
原创 Android解析JSON,你真的需要三方库?
一般情况下,如果服务器返回 JSON 数据,而且你又是做 Android 的,那么你首先想到的可能是GSON,或是fastJson这样的框架。这些框架能够很方便和快速的让我们将 JSON 转换成本地对象,是开发的首选。但是引用三方库也是有代价的,显而易见的就是包体积增大,库的升级等。这个时候,就需要想一想我们是不是必须要使用三方库了。
2017-09-18 23:38:31
728
原创 为什么我的 Android Studio 那么卡
最近换了 Mac Pro 写代码,然而没想到 Android Studio 会在苹果电脑上那么卡。主要表现为3点:正常在 java 文件中写注释时,如果输入中文会很卡;基本无法编辑 build.gradle , 一个输入就卡2分钟;打开 Android Studio 就会内存占用升高,电脑温度升高;本文将为上述3个问题提供一个解决方案。
2017-08-27 21:05:55
866
mips[64]el-linux-android-4.9.zip
2020-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人