Android
文章平均质量分 93
孙强 Jimmy
小米汽车 Android 开发
展开
-
AIDL 如何分片传输大量 Parcelable 数据列表
本文针对 AIDL 跨进程传输大量 Parcelable 数据所产生的问题总结出一套分片传输的解决方案,并分析了一下其实现的原理。原创 2023-11-24 11:43:42 · 2757 阅读 · 2 评论 -
自定义 Lint 检查实践指南
本文在官方文档的基础上,详细讲解了自定义 Lint 检查代码的步骤,并给出了调试代码的方法和发布流程,方便团队进行代码的管理。原创 2020-10-24 11:02:55 · 1038 阅读 · 0 评论 -
Kotlin 真香系列:扩展函数和属性
本文将介绍 Kotlin 中的扩展函数和扩展属性,并用这两个特性来逐步优化代码的写法,希望大家学习这种特性并在实践当中做更多的扩展。原创 2020-05-28 09:43:25 · 1833 阅读 · 0 评论 -
给 Android 开发者的 Dart 语言基础
本文基于官方的文档,整理出 Dart 语言中与 Java 和 Kotlin 语言类似和特有的部分,因此本文的读者需要具备一定的 Java 及 Kotlin 语言基础,相信大家读完本文就可以看懂大部分的 Flutter 代码了。原创 2020-05-25 20:26:47 · 701 阅读 · 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)意思是说在 Android API 24 版本(Android 7.0)以上时才能使用这些方法,但是通...原创 2019-11-01 20:24:39 · 3066 阅读 · 2 评论 -
小米2/2S刷基于Android 5.1.1的CM12.1系统教程
这两天闲来无事,想把手里一台闲置的小米2S刷成原生Android系统玩玩,在网上找了各种教程,历经波折,终于刷成了基于Android5.1.1的CM12.1系统。那么我来讲讲刷机的过程吧!首先,我的小米2S是分两个分区的,分别是系统存储和内部存储,刷Android5.1.1需要合并分区,这也是我一直想实现的事情,小米官方论坛给出了合并分区的方法,可以参考链接:http://www.miui原创 2016-01-19 19:04:50 · 13091 阅读 · 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.bundlefatal: error [Errno 101] Network is unreachable原因原创 2016-07-25 08:56:07 · 8623 阅读 · 0 评论 -
下载并编译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 · 3653 阅读 · 0 评论 -
编译适配小米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 阅读 · 0 评论 -
Android内存抖动及内存泄漏的发现、定位和解决
内存抖动是指在短时间内有大量的对象被创建或者被回收的现象,内存抖动出现原因主要是频繁(很重要)在循环里创建对象(导致大量对象在短时间内被创建,由于新对象是要占用内存空间的而且是频繁,如果一次或者两次在循环里创建对象对内存影响不大,不会造成严重内存抖动这样可以接受也不可避免,频繁的话就很内存抖动很严重),内存抖动的影响是如果抖动很频繁,会导致垃圾回收机制频繁运行(短时间内产生大量对象,需要大量内存,转载 2017-05-07 14:48:02 · 4065 阅读 · 2 评论 -
Ubuntu下安装Remix OS双系统
以下两种方法都适合安装RemixOS PC版(Android x86版本)到Ubuntu系统上,只需要修改对应的grub.cfg就可以了。方法一:把系统安装在自己的独立分区这种做法适合当前硬盘可以有空闲空间来分割成独立分区。1. 创建独立分区打开Ubuntu下的磁盘(/usr/share/applications目录下可以直接打开)。点击空余空间后点击+符号创建新分区,例如我为原创 2017-07-20 11:10:07 · 4328 阅读 · 0 评论 -
ERROR: 32-bit Linux Android emulator binaries are DEPRECATED解决方法
如果你的Linux是32位的,那么运行Android模拟器的时候会报错,错误信息如下:ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to use themyou will have to do at least one of the following:- Use the '-force-32bit' opt原创 2015-04-14 14:23:18 · 1750 阅读 · 0 评论 -
解决 Android SDK Manager 的 Download interrupted: URL not found 问题
启动AndroidSDKManager,打开主界面,依次选择Tools、Options...,弹出AndroidSDKManager-Settings窗口。在AndroidSDKManager-Settings窗口中,在HTTPProxyServer和HTTPProxyPort输入框内选择填入域名和端口号:中国科学院开源协会镜像站地址:I原创 2016-01-14 14:43:30 · 11066 阅读 · 6 评论 -
百度地图Android SDK坐标转换方法
百度地图 Android SDK 或者 iOS SDK 等各种各样的 API 工具产品,都使用的是百度自己经过加密的坐标体系。众多开发者在使用过程中,位置点都是通过 GPS 或者其他途径获取的,所以与百度地图所使用的坐标系存在差异。开发者在将这些空间位置信息运用到百度地图上的时候,需要进行响应的纠偏(坐标转换),百度地图Android SDK 为广大开发者开放了相应的坐标转换方法,开发者只需要原创 2016-01-14 14:30:00 · 3376 阅读 · 3 评论 -
Android内存优化汇总
写在最前:本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总、挑选、简化后整理而成。所以我将本文定义为一个工具类的文章,如果你在ANDROID开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯的学习或复习一下内存相关知识,都欢迎阅读。(本文最后我会尽量列出所参考的文章)。内存简介:转载 2017-09-05 22:07:47 · 3276 阅读 · 0 评论 -
Android 动态修改 APP 图标
原理:在Manifest文件中,使用<activity-alias>标签为我们的启动Activity准备多个别名,拥有<activity-alias>标签的activity指向启动Activity,每个拥有<activity-alias>标签的Activity都可以单独设置一个icon,在程序中我们动态设置<activity>和<activit...原创 2018-01-22 15:54:16 · 6329 阅读 · 1 评论 -
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 · 2359 阅读 · 0 评论 -
如何精确设置 RecyclerView 自动滑动时间(速度)
有时我们会碰到一个让RecyclerView在固定时间滑动到指定位置的需求,网上的方法都是重写LinearSmoothScroller类的calculateTimeForScrolling()方法,虽然可以修改时长,但还是不能精确到具体的时间。本文将会教大家如何去精确设置RecyclerView自动滑动的时间。之前看到这篇文章:android之ViewPager修改滑动速度,发现是可以通过...原创 2019-08-22 21:37:27 · 6599 阅读 · 2 评论 -
从 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 · 1400 阅读 · 2 评论 -
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 · 6602 阅读 · 0 评论 -
Android主流Router库对比(ARouter、ActivityRouter)
本文对Android主流的Router库的异同进行对比,包括阿里的ARouter和mzule的ActivityRouter,详见下表: 类型 ARouter ActivityRouter GitHub地址 https://github.com/alibaba/Arouter htt...原创 2019-07-01 20:16:36 · 4381 阅读 · 0 评论 -
Android 动态界面开发框架 VirtualView 之 Page、Scroller 数据绑定
相信有过Android开发经验的朋友们都了解ViewPager、RecyclerView的使用,当绑定每一项数据时,需要在相应的Adapter的instantiateItem()或onBindViewHolder()方法中去实现。在Android动态界面开发框架VirtualView使用完整教程中我们学习了VirtualView基本的使用方法,在这里容器组件Page和Scroller等就类似于...原创 2019-05-23 21:40:08 · 1636 阅读 · 0 评论 -
Android 动态界面开发框架 VirtualView 使用完整教程
阅读本文大概需要20分钟在Android动态界面开发框架Tangram使用完整教程我们学习了Tangram的使用。在 Tangram 体系里,页面结构可以通过配置动态更新,然而业务组件是通过 Java 代码实现的,无法动态更新。VirtualView 就是为了解决业务组件的动态更新而生的,它提供了一系列基础 UI 组件和布局组件能力,通过 XML 来搭建业务组件,并将 XML 模板编译...原创 2019-04-25 17:48:18 · 9277 阅读 · 14 评论 -
Android 动态界面开发框架 Tangram 使用完整教程
阅读本文大概需要20分钟熟悉阿里出品的vlayout的读者都知道,vlayout极大地扩展了RecyclerView的LayoutManager,从而为RecyclerView提供了一组布局。使用该开源项目,可以让我们在同一个RecyclerView里处理线性、网格等等各种复杂的布局。然而,使用vlayout时,一切都需要用Java代码实现,而且都是写在客户端上,一旦需要修改就必须发版,不...原创 2019-04-25 16:51:20 · 25549 阅读 · 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 · 9980 阅读 · 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 · 1763 阅读 · 0 评论 -
Android Studio 全局关键字搜索忽略 R.java 文件
在Android Studio中,我们经常会使用到全局关键字搜索功能,但是常常会在搜索结果中出现R.java或build生成的文件,这大大减少了检索的效率。那么,怎么在搜索结果中忽略掉这些无用文件呢?方法如下:1. 首先打开全局搜索功能,可以通过菜单"Edit"->"Find"->"Find in Path..."或快捷键(我的是Ctrl+H)找到。然后选择“Scope”,再点击右...原创 2019-01-07 11:30:22 · 2959 阅读 · 0 评论 -
史上最全 Android 应用角标适配方法
Android 8.0之前原生是不支持应用角标的,是各个手机厂商自己在系统中实现的应用角标,并且部分厂商提供了设置的方式,所以需要对各个厂商的系统进行适配。GitHub地址:https://github.com/jimmysuncpt/AppBadge下面是针对各个手机厂商的系统进行适配的原理。目录0 公用方法1 小米(支持)2 华为(支持)3 OPPO(不支持)4...原创 2018-12-05 10:55:53 · 15613 阅读 · 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 · 8096 阅读 · 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 SE 1.6.查了一下现在已安装的java:java -versionjava versi转载 2016-07-25 21:49:41 · 25105 阅读 · 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 either in IDE or Gradle 错误发生在构建Gradle的过程中正在下载...原创 2016-04-19 14:24:57 · 61199 阅读 · 8 评论