自定义博客皮肤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 等技术分享,欢迎点赞、收藏与关注~

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

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

2019-09-28 18:05:08 666 0

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

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

2020-05-25 20:26:47 23 0

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

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

2019-11-01 20:24:39 917 0

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

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

2019-10-23 20:20:30 18037 22

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

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

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

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

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

2019-08-22 21:37:27 1466 1

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

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

2019-07-26 11:36:43 1330 1

原创 Java内存模型及分区

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

2019-07-25 11:19:46 1406 4

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

熟悉Java多线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了。 目录 1 线程池的优势 2 线程池的使用 3 线程池的工作原理 4 线程池的参数 4.1 任务队列(workQueue) 4.2 线程工厂(threadFactory) ...

2019-07-09 19:27:00 26293 19

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

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

2019-07-05 17:20:17 1978 0

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

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

2019-07-01 20:16:36 1878 0

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

相信有过Android开发经验的朋友们都了解ViewPager、RecyclerView的使用,当绑定每一项数据时,需要在相应的Adapter的instantiateItem()或onBindViewHolder()方法中去实现。 在Android动态界面开发框架VirtualView使用完整教...

2019-05-23 21:40:08 1036 0

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

阅读本文大概需要20分钟 在Android动态界面开发框架Tangram使用完整教程我们学习了Tangram的使用。 在 Tangram 体系里,页面结构可以通过配置动态更新,然而业务组件是通过 Java 代码实现的,无法动态更新。VirtualView 就是为了解决业务组件的动态更新而生的...

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

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

阅读本文大概需要20分钟 熟悉阿里出品的vlayout的读者都知道,vlayout极大地扩展了RecyclerView的LayoutManager,从而为RecyclerView提供了一组布局。使用该开源项目,可以让我们在同一个RecyclerView里处理线性、网格等等各种复杂的布局。然而,...

2019-04-25 16:51:20 9031 5

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

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

2019-03-29 14:58:24 1886 0

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

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

2019-01-15 16:48:06 1202 0

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

在Android Studio中,我们经常会使用到全局关键字搜索功能,但是常常会在搜索结果中出现R.java或build生成的文件,这大大减少了检索的效率。那么,怎么在搜索结果中忽略掉这些无用文件呢?方法如下: 1. 首先打开全局搜索功能,可以通过菜单"Edit"-&...

2019-01-07 11:30:22 1689 0

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

Android 8.0之前原生是不支持应用角标的,是各个手机厂商自己在系统中实现的应用角标,并且部分厂商提供了设置的方式,所以需要对各个厂商的系统进行适配。 GitHub地址:https://github.com/jimmysuncpt/AppBadge 下面是针对各个手机厂商的系统进行适配的...

2018-12-05 10:55:53 6690 0

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

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

2018-07-13 09:33:27 3736 0

转载 Intro To RxJava 系列教程

      Intro To RxJava 系列教程一共四个部分,第一部分介绍了为什么要使用 RxJava以及 RxJava的关键概念:RxJava 教程第一部分:入门之 Why RxRxJava 教程第一部分:入门之 关键的类RxJava 教程第一部分:入门之 生命周期管理如果看完第一部分对于为...

2018-06-07 13:45:03 941 0

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

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

2018-05-02 14:14:14 1171 0

原创 Android动态修改APP图标

原理:在Manifest文件中,使用<activity-alias>标签为我们的启动Activity准备多个别名,拥有<activity-alias>标签的activity指向启动Activity,每个拥有<activity-alias>标签的Activity都...

2018-01-22 15:54:16 4103 0

转载 Android内存优化汇总

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

2017-09-05 22:07:47 1502 0

原创 Ubuntu下安装Remix OS双系统

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

2017-07-20 11:10:07 2604 0

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

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

2017-05-07 14:48:02 2531 1

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

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

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

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

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

2016-10-01 15:32:24 3231 0

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

Ubuntu开机的时候默认是不会打开小键盘的,这样每次输入密码时都要按以下Num Lock键,比较麻烦。笔者使用如下的方法可以自动打开小键盘:sudo apt-get install numlockx sudo gedit /etc/lightdm/lightdm.conf在最后一行输入:gree...

2016-09-05 09:27:55 1570 0

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

1. 下载goldfish源码 在Android源码根目录下新建kernel文件夹: $ mkdir kernel $ cd kernel 下载源码: $ git clone http://android.googlesource.com/kernel/goldfish.git 下载完毕...

2016-08-16 15:11:39 2513 0

转载 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...

2016-07-25 21:49:41 17089 0

原创 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.bundle ...

2016-07-25 08:56:07 5642 0

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

1. Gem5 Gem5由C++和Python共同完成。可以在FS(full system)模式下模拟完整的系统,或是在SE(syscall emulation)模式下由模拟器提供系统调用模拟用户空间程序。 1.1 Gem5的安装 1.1.1 预装软件 (1)安装python 因...

2016-07-19 16:58:19 4847 0

原创 Matlab2012B Windows 安装详细教程

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

2016-07-08 09:18:18 7664 0

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

当你的Chrome上出现下图的"Your profile could not be opened correctly"错误信息时,可能是因为你的Chrome配置文件数据已经损坏。这个问题经常发生在手动升级Google Chrome的时候。 解决该问题取决于到底...

2016-07-07 18:08:37 1720 0

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

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

2016-07-06 14:16:59 15655 0

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

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

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

原创 Android Studio Error:Connection timed out: connect.解决方案

小编把Android Studio升级到了2.0版本,但是遇到了这样的错误: Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy settings eit...

2016-04-19 14:24:57 50561 6

原创 Windows安装Java环境JDK

首先打开浏览器,进入JDK的下载页面进行下载,网址为http://www.oracle.com/technetwork/java/javase/downloads/index.html。双击下载的exe文件,开始安装JDK,只要一直单击“下一步”按钮,即可完成安装。     安装完成后,要注意环境...

2016-03-04 15:29:30 1230 0

原创 Ubuntu在标题栏显示CPU、内存、网速和温度

1. 安装System Monitor Indicator: sudo add-apt-repository ppa:alexeftimie/ppa sudo apt-get update sudo apt-get install indicator-sysmonitor 也可以通过这个链接下...

2016-02-03 15:53:50 5418 0

原创 出现错误0x80070522:客户端没有所需的特权的解决方法

Win10往C盘上粘贴文件的时候提示错误0x80070522:客户端没有所需的特权,解决方法如下: 打开命令提示符(cmd),执行以下命令就可以完美解决。 icacls c:\ /setintegritylevel M

2016-02-02 17:25:32 30283 15

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