自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孙强 Jimmy 的博客

专注 Android、Java、Kotlin、Jetpack 和 Linux 等技术分享,欢迎点赞、收藏与关注~

  • 博客(60)
  • 资源 (18)
  • 收藏
  • 关注

原创 欢迎加入强哥的 Android 开发交流群

最近建了一个 Android 开发交流群,但不限于交流移动端、前端和后端等相关技术。本群的宗旨:让所有学习的群友都有进步的机会。1. 经验交流在我们学习时遇到困境,或者开发过程中遇到难题,都可以将你的问题抛出来,也许别人也会遇到过,让有经验的人来帮你解答。2. 文章分享我会每天分享一篇优质的文章,同时也会写上一段分享的理由,希望你看到好的文章也分享进来,大家一起学习进步。3. 职位内推...

2019-09-28 18:05:08 1804

原创 AIDL 如何分片传输大量 Parcelable 数据列表

本文针对 AIDL 跨进程传输大量 Parcelable 数据所产生的问题总结出一套分片传输的解决方案,并分析了一下其实现的原理。

2023-11-24 11:43:42 2744 2

原创 回顾 2021,展望 2022

岁末年初,用一篇文章来纪念逝去的 2021。很惭愧这一年没有输出技术文章,回首这一年完全可以用一个关键词来形容:「焦虑」。下面分几个部分来回顾一下我的 2021,再来展望一下 2022。

2022-01-28 11:17:01 955 2

原创 2020 年终总结

2020 这一年,有成长,有坎坷,总结下来也有很多思考。本文回顾总结一下我的 2020 年所经历的事情,并分享一些好的文章和书籍给大家,最后再展望一下 2021 年的规划。

2021-01-02 18:53:45 717 4

原创 自定义 Lint 检查实践指南

本文在官方文档的基础上,详细讲解了自定义 Lint 检查代码的步骤,并给出了调试代码的方法和发布流程,方便团队进行代码的管理。

2020-10-24 11:02:55 1038

原创 Kotlin 真香系列:扩展函数和属性

本文将介绍 Kotlin 中的扩展函数和扩展属性,并用这两个特性来逐步优化代码的写法,希望大家学习这种特性并在实践当中做更多的扩展。

2020-05-28 09:43:25 1831

原创 给 Android 开发者的 Dart 语言基础

本文基于官方的文档,整理出 Dart 语言中与 Java 和 Kotlin 语言类似和特有的部分,因此本文的读者需要具备一定的 Java 及 Kotlin 语言基础,相信大家读完本文就可以看懂大部分的 Flutter 代码了。

2020-05-25 20:26:47 701

原创 Android 开发:如何优雅引入 Java 8 Stream API

Java 8 的更新给我们带来了很多新的特性,例如 Stream API 等等,但是在 Android 开发中使用 Java 8 的这些 API 时,通常 Android Studio 会提示如下错误:Call requires API level 24(current min is xx)意思是说在 Android API 24 版本(Android 7.0)以上时才能使用这些方法,但是通...

2019-11-01 20:24:39 3063 2

原创 Java 8:一文掌握 Lambda 表达式

本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结。

2019-10-23 20:20:30 21131 23

原创 从 0 到 1 优雅实现沉浸式状态栏

本文将会教给大家如何从0到1优雅地实现沉浸式状态栏的效果,包括设置状态栏的颜色、状态栏透明和状态栏的文字颜色,并可以适配启动页和刘海屏等等。目录1. 概述2. 实现方案2.1 前期工作2.1.1 修改应用主题2.1.2 获取状态栏高度2.2 Android 5.0+2.2.1 设置状态栏颜色2.2.2 设置状态栏文字颜色2.2.3 设置状态栏透明2....

2019-08-25 17:58:34 1396 2

原创 如何精确设置 RecyclerView 自动滑动时间(速度)

有时我们会碰到一个让RecyclerView在固定时间滑动到指定位置的需求,网上的方法都是重写LinearSmoothScroller类的calculateTimeForScrolling()方法,虽然可以修改时长,但还是不能精确到具体的时间。本文将会教大家如何去精确设置RecyclerView自动滑动的时间。之前看到这篇文章:android之ViewPager修改滑动速度,发现是可以通过...

2019-08-22 21:37:27 6592 2

原创 JVM:类加载的五个过程:加载、验证、准备、解析、初始化

类的整个生命周期包括加载、验证、准备、解析、初始化、使用和卸载7个阶段,其中验证、准备、解析这3个部分统称为连接,如下图所示。加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。注意,这里的几个阶段是按顺序开始,而不是按顺序进行或完成的,因为这些阶段通常都是互相...

2019-07-26 11:36:43 4649 2

原创 Java 内存分区讲解

对于一个Java开发者,了解Java中的对象、变量等存放的内存区域是十分重要的。本文将全面讲解Java虚拟机中的内存模型和分区。Java虚拟机把管理的内存划分为几个不同的数据区域,如下图所示。下面就分别展开讲解一下每个区域的功能。1. Java堆Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,所有的对象实例以及数组都要在堆...

2019-07-25 11:19:46 2533 8

原创 Java 多线程:彻底搞懂线程池

熟悉Java多线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了。

2019-07-09 19:27:00 181217 110

原创 Android 经验:TimeoutException 问题分析与解决

问题概述在我们项目开发中,在Crash收集平台可能会经常遇到TimeoutException相关的Crash,通常在OPPO的Android 5.0 - 6.0的手机会复现,输出的堆栈日志大概有下面几种:java.util.regex.Pattern.finalize() timed out after 120 secondscom.android.internal.os.Binder...

2019-07-05 17:20:17 6598

原创 Android主流Router库对比(ARouter、ActivityRouter)

本文对Android主流的Router库的异同进行对比,包括阿里的ARouter和mzule的ActivityRouter,详见下表: 类型 ARouter ActivityRouter GitHub地址 https://github.com/alibaba/Arouter htt...

2019-07-01 20:16:36 4379

原创 Android 动态界面开发框架 VirtualView 之 Page、Scroller 数据绑定

相信有过Android开发经验的朋友们都了解ViewPager、RecyclerView的使用,当绑定每一项数据时,需要在相应的Adapter的instantiateItem()或onBindViewHolder()方法中去实现。在Android动态界面开发框架VirtualView使用完整教程中我们学习了VirtualView基本的使用方法,在这里容器组件Page和Scroller等就类似于...

2019-05-23 21:40:08 1636

原创 Android 动态界面开发框架 VirtualView 使用完整教程

阅读本文大概需要20分钟在Android动态界面开发框架Tangram使用完整教程我们学习了Tangram的使用。在 Tangram 体系里,页面结构可以通过配置动态更新,然而业务组件是通过 Java 代码实现的,无法动态更新。VirtualView 就是为了解决业务组件的动态更新而生的,它提供了一系列基础 UI 组件和布局组件能力,通过 XML 来搭建业务组件,并将 XML 模板编译...

2019-04-25 17:48:18 9269 14

原创 Android 动态界面开发框架 Tangram 使用完整教程

阅读本文大概需要20分钟熟悉阿里出品的vlayout的读者都知道,vlayout极大地扩展了RecyclerView的LayoutManager,从而为RecyclerView提供了一组布局。使用该开源项目,可以让我们在同一个RecyclerView里处理线性、网格等等各种复杂的布局。然而,使用vlayout时,一切都需要用Java代码实现,而且都是写在客户端上,一旦需要修改就必须发版,不...

2019-04-25 16:51:20 25545 12

原创 Android 非全屏的 Window 无法设置 SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 问题分析

小编在做沉浸式状态栏功能时,遇到一个这样的问题:当我在一个Dialog的onCreate()方法中执行下面的代码:@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_...

2019-03-29 14:58:24 9976 1

原创 Mac Android Studio 修改注释模板中的 ${USER} 变量

在/Application/下找到Android Studio,右键-显示包内容打开/Android Studio/Contents/bin/studio.vmoptions,用Sublime编辑器打开,在最后一行添加-Duser.name=Jimmy(修改为自己想要的名称)然后重启Android Studio。如下图所示:参考链接:https://blog.csdn....

2019-01-15 16:48:06 1762

原创 Android Studio 全局关键字搜索忽略 R.java 文件

在Android Studio中,我们经常会使用到全局关键字搜索功能,但是常常会在搜索结果中出现R.java或build生成的文件,这大大减少了检索的效率。那么,怎么在搜索结果中忽略掉这些无用文件呢?方法如下:1. 首先打开全局搜索功能,可以通过菜单"Edit"->"Find"->"Find in Path..."或快捷键(我的是Ctrl+H)找到。然后选择“Scope”,再点击右...

2019-01-07 11:30:22 2955

原创 史上最全 Android 应用角标适配方法

Android 8.0之前原生是不支持应用角标的,是各个手机厂商自己在系统中实现的应用角标,并且部分厂商提供了设置的方式,所以需要对各个厂商的系统进行适配。GitHub地址:https://github.com/jimmysuncpt/AppBadge下面是针对各个手机厂商的系统进行适配的原理。目录0 公用方法1 小米(支持)2 华为(支持)3 OPPO(不支持)4...

2018-12-05 10:55:53 15606 1

原创 Android Studio 中利用 Android Profiler 测量应用性能

本教程相当于官方教程的精简版,将官方教程的干货提取出来。另外还写了一个分析内存泄漏的例子。Android Profiler能够提供关于应用 CPU、内存和网络的实时数据。目录1启动分析2CPU Profiler2.1 CPU Profiler 概览2.2 记录和检查函数跟踪2.2.1 使用 Call Chart 标签检查跟踪2.2.2 使用 Flame Ch...

2018-07-13 09:33:27 8092

原创 Android 微信、QQ、微博分享问题汇总

1. 微信分享1.1 分享至好友会话支持类型:文字、图片、音乐、视频、网页、小程序。1.1.1 文字类型分享字段包含:纯文本(必填)1.1.2 图片类型分享字段包含:图片(必填,支持jpg、png、gif,最大10MB) 缩略图(建议,支持jpg、png,最大32KB)1.1.3 音乐类型分享字段包含:音乐URL(必填) 音乐标题(建议) 音乐描述(可...

2018-05-02 14:14:14 2358

原创 Android 动态修改 APP 图标

原理:在Manifest文件中,使用<activity-alias>标签为我们的启动Activity准备多个别名,拥有<activity-alias>标签的activity指向启动Activity,每个拥有<activity-alias>标签的Activity都可以单独设置一个icon,在程序中我们动态设置<activity>和<activit...

2018-01-22 15:54:16 6327 1

转载 Android内存优化汇总

写在最前:本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总、挑选、简化后整理而成。所以我将本文定义为一个工具类的文章,如果你在ANDROID开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯的学习或复习一下内存相关知识,都欢迎阅读。(本文最后我会尽量列出所参考的文章)。内存简介:

2017-09-05 22:07:47 3275

原创 Ubuntu下安装Remix OS双系统

以下两种方法都适合安装RemixOS PC版(Android x86版本)到Ubuntu系统上,只需要修改对应的grub.cfg就可以了。方法一:把系统安装在自己的独立分区这种做法适合当前硬盘可以有空闲空间来分割成独立分区。1. 创建独立分区打开Ubuntu下的磁盘(/usr/share/applications目录下可以直接打开)。点击空余空间后点击+符号创建新分区,例如我为

2017-07-20 11:10:07 4319

转载 Android内存抖动及内存泄漏的发现、定位和解决

内存抖动是指在短时间内有大量的对象被创建或者被回收的现象,内存抖动出现原因主要是频繁(很重要)在循环里创建对象(导致大量对象在短时间内被创建,由于新对象是要占用内存空间的而且是频繁,如果一次或者两次在循环里创建对象对内存影响不大,不会造成严重内存抖动这样可以接受也不可避免,频繁的话就很内存抖动很严重),内存抖动的影响是如果抖动很频繁,会导致垃圾回收机制频繁运行(短时间内产生大量对象,需要大量内存,

2017-05-07 14:48:02 4064 2

原创 《算法(第4版)》课后练习答案及相关问题解决方案

《算法(第4版)》一书的代码和课后练习的答案我都分享到了我的GitHub上面,地址如下:https://github.com/jimmysuncpt/Algorithms如果对您有帮助,觉得还不错,麻烦赏个Star吧!您也可以贡献您的代码,帮助完善这个项目,十分感谢哦!另外,分享另一个兄弟的可供参考:https://github.com/aistrate/AlgorithmsSedge

2016-11-18 21:42:20 36210 12

原创 编译适配小米2S的CM Linux内核源代码及问题解决

1.下载内核源代码首先进入CM官网与小米2S相关的页面:http://wiki.cyanogenmod.org/w/Aries_Info在页面中可以找到Kernel后面的链接:http://www.github.com/cyanogenmod/android_kernel_xiaomi_aries单击该链接进入github下载页面,可以通过git clone下载,也可以

2016-10-01 15:32:24 4455

原创 Ubuntu12.04开机自动打开小键盘

Ubuntu开机的时候默认是不会打开小键盘的,这样每次输入密码时都要按以下Num Lock键,比较麻烦。笔者使用如下的方法可以自动打开小键盘:sudo apt-get install numlockxsudo gedit /etc/lightdm/lightdm.conf在最后一行输入:greeter-setup-script=/usr/bin/numlockx on保存,退出,再重启一下就OK

2016-09-05 09:27:55 1937 1

原创 下载并编译Android模拟器Linux内核goldfish教程

1. 下载goldfish源码在Android源码根目录下新建kernel文件夹:$ mkdir kernel$ cd kernel下载源码:$ git clone http://android.googlesource.com/kernel/goldfish.git下载完毕会在kernel目录下会生成一个goldfish文件夹,进入此目录:$ cd goldfish

2016-08-16 15:11:39 3651

转载 Android源码编译make的各类错误解决方案汇总

问题:You are attempting to build with the incorrect version of java. Your version is: java version "1.6.0_22".The correct version is: Java SE 1.6.查了一下现在已安装的java:java -versionjava versi

2016-07-25 21:49:41 25089 1

原创 repo init出现错误fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle解决方法

当执行repo init -u https://android.googlesource.com/platform/manifest时出现如下错误:fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundlefatal: error [Errno 101] Network is unreachable原因

2016-07-25 08:56:07 8620

原创 gem5、McPAT和HotSpot的联合仿真实验教程

1. Gem5Gem5由C++和Python共同完成。可以在FS(full system)模式下模拟完整的系统,或是在SE(syscall emulation)模式下由模拟器提供系统调用模拟用户空间程序。1.1 Gem5的安装1.1.1 预装软件(1)安装python因为scons是用python写的,所以在使用scons之前,我们需要安装python。一般情况在你安装

2016-07-19 16:58:19 7223 5

原创 Matlab2012B Windows 安装详细教程

下载Matlab 2012B。使用虚拟光驱打开Matlab 2012B的iso文件或将Matlab 2012B相关文件提取/解压缩至一个文件目录。双击setup.exe进行安装(如图2)图 2安装中选择“不使用Internet安装”图3接受许可协议图4输入安装密钥:37176-43568-09521-61284-60764-48411-11...

2016-07-08 09:18:18 14603 4

原创 Linux下Chrome或Chromium出现“Your profile could not be opened correctly”解决方法

当你的Chrome上出现下图的"Your profile could not be opened correctly"错误信息时,可能是因为你的Chrome配置文件数据已经损坏。这个问题经常发生在手动升级Google Chrome的时候。解决该问题取决于到底哪个文件损坏,你可以试试下面的几个方法。如果是Chromium,要将"google-chrome"换成"chromium"

2016-07-07 18:08:37 2336

原创 解决Ubuntu12.04安装python-dev时依赖出错的问题

在Ubuntu下写python代码的时候,有时会需要安装一些第三方的库,安装的时候提示:SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev.  然后按照提示sudo apt-get install Python-dev又出错,提示:

2016-07-06 14:16:59 20193 1

原创 Ubuntu安装fcitx和搜狗输入法

1. 安装fcitx输入法1.1 下载安装fcitx输入法输入如下命令即可安装fcitx输入法:sudo apt-get install fcitx对于较早版本的Ubuntu,如Ubuntu 12.04,其自带的fcitx版本比较旧,需要通过PPA升级,具体有两种方式:(1)命令行方式打开终端,添加fcitx的ppa:sudo add-apt-repository

2016-07-06 08:31:59 7509 1

CM12主题-iOS.apk

CM12的仿iOS主题,非常不错。

2017-10-10

gem5-stable.tar.gz

gem5稳定版

2016-07-06

m4-1.4.16.tar.gz

gem5的依赖包之一

2016-07-06

zlib-1.2.8.tar.gz

gem5依赖包之一

2016-07-06

swig-2.0.7.tar.gz

gem5的依赖包之一

2016-07-06

pcre-8.38.tar.gz

gem5的依赖包之一

2016-07-06

protobuf-2.5.0.tar.gz

gem5的依赖包之一

2016-07-06

fcitx-sogoupinyin_0.0.1-2_amd64.deb

用于Ubuntu等64位Linux系统的基于fcitx的搜狗输入法

2016-07-06

fcitx-sogoupinyin_0.0.1-2_i386.deb

用于Ubuntu等32位Linux系统的基于fcitx的搜狗输入法

2016-07-06

WiFiAdb.apk

WiFi ADB 是一个通过无线网络来使电脑和手机连接的手机App,当我们做测试的时候,只需在手机上打开,电脑只需在命令行输入adb connect xxx.xxx.xxx.xxx:5555,电脑可以连接手机,就可以通过无线网络来调试开发的应用。

2016-04-13

Android编程权威指南挑战练习参考答案(修订版)

为《Android编程权威指南》所做的答案,其中包含个人以及论坛上提供的方法,绝大部分可以运行成功,为大家寻找答案节省时间。在本人上传的上一版中发现了很多错误,这一版都已经修正过来。也许还不够完美,请大家多多指正。

2015-04-07

Android编程权威指南挑战练习参考答案

《Android编程权威指南》挑战练习参考答案。

2015-03-02

jigloo_464.zip

Eclipse的GUI构建工具Jigloo,方便图形用户界面编程。

2015-01-24

《Thinking In Patterns》原版文档及代码

《Thinking In Patterns》英文原版html文档及源代码。

2014-12-03

C函数速查手册.chm

C函数速查手册.chm 本帮助文件由杜华整理制作,内容全摘自网络,版权归实际作者所有.

2014-11-09

Linux常用命令全集.chm

Linux常用命令大全 《中国IT实验室》搜集整理

2014-11-09

j2se6.chm英文版

Java 2 SE 6 Documentation(HtmlHelp version by F.Allimant) Java SE 6 英文原版帮助文档,欢迎下载!

2014-11-08

Java 2 SE 6 Documentation(HtmlHelp version by F.Allimant)

强大的英文版可搜索的Java SE 6帮助文档,欢迎下载!

2014-11-08

空空如也

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

TA关注的人

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