内存管理、优化等
文章平均质量分 75
马占柱
Android行业多年软件开发经验,从事多年移动App开发,涉及医疗健康、商城、聊天、代驾打车、特种设备防护、公安边检查验领域;目前从事汽车车载系统开发工作。
展开
-
视频压缩【亲测可用】
废话不多说,先上使用方法VideoCompress.compressVideoLow("原视频路径", "压缩之后的视频路径", new VideoCompress.CompressListener() { @Override public void onStart() { //开始原创 2021-03-05 10:59:06 · 620 阅读 · 6 评论 -
EventBus 报“Subscriber class already registered to event class”错误
原文这句子的话意思也很容易理解,“接收者类已经被注册为事件类了”。之前我是这么写:事件注册是写在onStart()里面的@Override protected void onStart() { super.onStart(); EventBus.getDefault().register(this); }来看一下Activity的生命周期:onStart()方法会在onCreate()后调用一次,在onRestart(..转载 2020-11-02 16:55:50 · 958 阅读 · 0 评论 -
android 各个存储、储存路径及获取方法总结
各个路径最长用到的就这三个位置/data/data/包名/ /sdcard/Android/data/包名/ /sdcard/xxx前两个是应用内部存储, 会随着app的卸载而自动删除, sdcard中其他的文件夹不会自动删除, 除非用户手动删除, 否则会一直存在, 换句话说就是垃圾.Google官方建议把数据存储在/sdcard/Android/data/包名/下.路径获取方法前两个应用内部存储通过 Context 来获取, 第三个作为外部存储是通过 Environment ...原创 2020-09-11 13:25:31 · 6351 阅读 · 0 评论 -
高德应用后台持续定位【AIDL双进程service保活实现方法+一像素综合方案】后续增加15s杀死不启动保活,15S后杀死启动保活功能,在最下面
官方文档说明:https://lbs.amap.com/dev/demo/service-location#Android核心难点首先在本地服务中启动连续定位功能,通过设置一个Alarm定期对本地服务进行周期唤起,从而达到后台持续定位的效果。1、在本地服务里启动连续定位://在activity中启动自定义本地服务LocationServicegetApplicationContext().startService(new Intent(this, LocationService.c.原创 2020-08-31 09:17:11 · 5697 阅读 · 14 评论 -
清除手机的缓存文件
首先获取缓存的大小/** * Create by Mazhanzhu on 2019/3/21 */public class DataCleanManager { /** * 获取缓存大小 */ public static String getTotalCacheSize(Context context) throws Exception { ...原创 2020-03-30 11:58:49 · 272 阅读 · 0 评论 -
你的 APP 为何启动那么慢?
App启动方式冷启动(Cold start)冷启动是指APP在手机启动后第一次运行,或者APP进程被kill掉后在再次启动。可见冷启动的必要条件是该APP进程不存在,这就意味着系统需要创建进程,APP需要初始化。在这三种启动方式中,冷启动耗时最长,对于冷启动的优化也是最具挑战的。因此本文重点谈论的是对冷启动相关的优化。温启动(Warm start)App进程存在,当时Activ...转载 2018-09-26 09:59:41 · 607 阅读 · 0 评论 -
Android 中arm64-v8a、armeabi-v7a、armeabi、x86简介~
首先按照四个部分来查询,分别如下: 一. lib和libs是否一样? 二. .so库又是什么鬼? 三. .so库又该如何存放? 四. libs下armeabi等的作用是什么?查询ING一. lib和libs是否一样? 放在lib中的是被reference的,放在libs中的是被include的。 放在libs中的文件会自动被Eclipse所include。所以不要把API放到libs里去。 lib...原创 2018-06-21 13:51:32 · 3516 阅读 · 0 评论 -
APK瘦身神器:Android App Bundles-让应用体积减少25%
大部分在应用商店上架过App或者进行过缩包优化的开发者可能都知道,在Android平台上,APK瘦身方面的优化手段其实不多,无非压缩资源、删除无用资源、代码混淆、在线资源库、微信压缩打包工具、插件化等,充其量只是一些裁裁剪剪,并没有从根本上解决安装包过大的问题。 但Google I/O 2018之后,这个问题可能不会再困扰开发者了,因为Google官方推出了一套堪称神器(事实上谷歌官方称它为...转载 2018-05-28 16:08:12 · 2296 阅读 · 2 评论 -
Android高效加载大图、多图解决方案,有效避免程序OOM
[说明]本文转载于 郭神(郭霖)原创!连接地址:http://blog.csdn.net/guolin_blog/article/details/9316683本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。http://developer.android.com/training/displaying-bitmaps/index.html高效...转载 2018-05-14 10:40:49 · 167 阅读 · 0 评论 -
返回键之moveTaskToBack(boolean ) 方法的使用
当你开发的程序被按后退键退出的时候, 你肯定不想让他就这么被finish()吧,那么就想把程序退置到后台就可。(类似于PC端,你关闭一个浏览器和你最小化一个浏览器的区别)public boolean moveTaskToBack(boolean nonRoot)参数值含义:1、false,仅当activity为task根(即首个activity例如启动activity之类的...原创 2018-11-09 16:45:57 · 915 阅读 · 0 评论 -
Android中跳转到系统一些设置界面setting的方法
1.跳转到系统的辅助功能界面Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent);2. 跳转到添加帐户界面Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT); startActivity(i...原创 2018-11-13 13:45:49 · 4860 阅读 · 3 评论 -
只需体验三分钟,你就会跟我一样,爱上这款Toast
这可能是性能最优、使用最简单,支持自定义,不需要通知栏权限的吐司Github传送地址,欢迎Star已投入公司项目多时,没有任何毛病,可胜任任何需求,点击此处下载Demo想了解实现原理的可以点击此链接查看:ToastUtils 源码集成步骤dependencies { implementation 'com.hjq:toast:3.0'}初始化T...转载 2018-11-12 10:01:12 · 4691 阅读 · 0 评论 -
Android Bitmap详解
一、基本信息Bitmap位图包括像素以及长、宽、颜色等描述信息。长宽和像素位数是用来描述图片的,可以通过这些信息计算出图片的像素占用内存的大小。位图可以理解为一个画架,把图放到上面然后可以对图片做一些列的处理。位图文件图像显示效果好,但是非压缩格式,需要占用较大的存储空间。1. Config:表示图片像素类型,包括ALPHA_8、RGB_565、ARGB_4444、ARGB_888...转载 2018-11-20 10:40:13 · 355 阅读 · 0 评论 -
崩溃日志保存本地log,服务器上传
废话不多说,源码献上!package com.anrongbc.util;import android.annotation.SuppressLint;import android.content.Context;import android.content.Intent;import android.content.pm.PackageInfo;import android.c...原创 2019-02-19 09:22:11 · 484 阅读 · 0 评论 -
一个APP从启动到主页面显示经历了哪些过程?
本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理。不介绍具体源码,仅仅构建一个大体框架。一、流程概述启动流程:①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;②system_server进程接收到请求后,向zygote进程发送创建进程的请求;③Z...转载 2019-02-28 14:04:26 · 406 阅读 · 0 评论 -
使用 WorkManager 管理后台任务【包括定时】
作为 Android Jetpack 中的新组件,WorkManager 负责用来管理后台任务,它和一个异步任务以及 Service 有什么区别呢?看完你就知道了。相关类我们先来看看 WorkManager 相关的几个类:Worker 任务的执行者,是一个抽象类,需要继承它实现要执行的任务。 WorkRequest指定让哪个 Woker 执行任务,指定执行的环境,执行的顺序...转载 2019-05-17 11:24:10 · 4192 阅读 · 0 评论 -
开启漫漫的agera之旅
通过这篇文章你可能会学习到:1.agera是什么,也就是它的基本概念和大体框架。2.agera的基础用法。3.agera的进阶用法。4.agera的源码分析。5.如何封装agera。5.agera和RxJava的区别。好了,让我们正式开启agera的学习之旅吧。agera是什么回答agera是什么之前,我们要先了解转载 2018-02-05 17:05:12 · 368 阅读 · 0 评论 -
Android开发一点小技巧和建议献上
有同学问我,对应用开发你有没有值得注意或小技巧的地方可以分享的。比如适配、优化、排查错误什么的。鸡排把自己的总结笔记整理出来了。供大家参考。开工准备在项目业务代码开工之前,最好把这些问题都解决掉,否则必将酿成大祸害。它们是:组件路由异步处理组件化模块工程全局网络拦截器异常统一处理器基础视图组件封装日志记录工具解决写无数次一模一样代码的模板(如自定义MVP模板)机型适配特定的转载 2018-01-29 11:39:11 · 201 阅读 · 0 评论 -
图片压缩算法机制—近微信压缩机制的Luban
目前做App开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进行裁切,压缩已经有很多文章介绍。但是裁切成多少,压缩成多少却很难控制好,裁切过头图片太小,质量压缩过头则显示效果太差。效果图压缩比例于是自然想到App巨头“微信”会是怎么处理,Luban(鲁班)就是通过在微信朋友圈发送近100张不同分辨转载 2017-12-22 16:01:13 · 1651 阅读 · 0 评论 -
这可能是最好的性能优化教程(二)
前言上篇写了 ArrayMap 和 UI 性能优化,这篇我想和大家聊聊每个人都关心的 APP 启动,参见 Android 性能优化典范。正文提高 APP 的启动速度对我们意义深远,很显然,APP 的启动时间越短,使用它的用户越有耐心等待打开这个 APP 进行使用。反之,启动时间太长,用户则有可能还没等到 APP 打开就已经切换到其他 APP 了。程序启动过程中那些复杂错误的操作很有可能导致转载 2017-10-20 10:58:18 · 255 阅读 · 0 评论 -
这可能是最好的性能优化教程(三)
前言内存泄漏从来都是我们老生常谈的话题,无论是 Android Studio 自带的内存泄漏分析工具还是专业的 Eclipse MAT 抑或是备受青睐的第三方插件 LeakCanary,都为我们的内存泄漏检测提供了便利。如果从根源上解决内存泄漏,内存优化必不可少。所以本章节我们参考扔物线胡凯的内存优化策略,直接拿出一章节来谈内存优化。内存优化基本可以分为下面几个方面减少对象的内存占用对内转载 2017-10-20 10:59:35 · 271 阅读 · 0 评论 -
中国国内可用API合集
中国国内可用API合集目录笔记出行词典电商地图电影即时通讯开发者网站快递查询旅游社交视频天气团队协作图片与图像处理外卖消息推送音乐云语音识别综合笔记OneNote - OneNote支持获取,复制,创建,更新,导入与导出笔记,支持为笔记添加多媒体内容,管理权限等。提供SDK和Demo。为知笔记 - 为知笔记Windows客户端开放了大量的API,其中绝大部分原创 2017-10-20 11:01:26 · 7437 阅读 · 0 评论 -
AndroidVideoCache-视频边播放边缓存的代理策略
视频现状现在视频播放的需求越来越常见,就和16年上半年的直播一样,似乎不加个视频已经不是个正常的APP了,连微信朋友圈都支持上传小视频,更别谈以视频为本命的一系列APP。视频方面主要是两块,一个是视频录制,这个已经翻过一篇比较全的文章,再加上google开源的 grafika ,可以在踩坑时减少很多障碍,不过录制这块适配是大问题,需要不断调整。另一个方面就是视频播放,这方面的轮子比上面录制就转载 2017-11-08 15:48:24 · 1857 阅读 · 1 评论 -
Android开发——Android中常见的4种线程池(保证你能看懂并理解)
使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用,减少创建和销毁线程的性能开销。其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞。最后,线程池能够对线程进行管理,比如使用ScheduledThreadPool来设置延迟N秒后执行任务,并且每隔M秒循环执行一次。下面会通过介绍线程池中的真正实现者——ThreadPoolExecutor来引出Android中的4原创 2017-11-03 11:36:59 · 247 阅读 · 0 评论 -
Android 应用点击图标到Activity界面显示的过程分析
分析这个过程不是单纯为跟一遍函数调用的流程,而是更好的理解平常用到的一些方法、对象的初始化时间,对象创建的个数,方法的先后顺序,以及每个类,方法背后的作用和目的。主要是一下几个问题:Application是什么时候创建的,每个应用程序有几个Application应用的资源路径什么时候初始化的应用中ContextImpl的个数Application.attach(),Activity.att翻译 2017-11-17 14:45:43 · 428 阅读 · 0 评论 -
内存泄露的八种花样
这是很久以前发布在简书平台上的一篇有关内存泄漏的译文。这篇文章提及的8种内存泄漏的场景,现在来看依旧很经典。为了避免内存泄漏,开发过程中需要谨慎谨慎再谨慎。同时,保持良好的开发习惯也至关重要。具有垃圾回收特性的语言(如Java)的优点在于,它使得开发者不需要显式的对内存的分配和回收进行管理。这个特性降低引发段错误引发应用崩溃的风险,避免没有释放的内存长期占据堆内存,从而编写出更加安全的翻译 2017-11-17 14:49:08 · 281 阅读 · 0 评论 -
怎样减少 Android 应用包 60% 的大小?
简评:,而减少 Android 应用安装包大小其实一点也不复杂。对于移动应用来说,应用安装包的大小当然是越小越好。特别是对于一些欠发达地区,你不希望用户因为手机「存储空间不足」而卸载你的应用。本文就介绍了几个小技巧来有效减少 apk 的大小:首先,我们先用 Android Studio 提供的 APK Analyser 工具来分析下我们的 apk 文件:apk可以看到占翻译 2017-11-14 17:55:07 · 296 阅读 · 0 评论 -
Android性能优化全方面解析
目的公司的新需求终于解决完了,离测试和发布还有段时间,第一次体验了下没需求没bug的感觉,真是舒爽~然后翻了翻有什么可以学的。无意翻到了Android后期发展的五大趋势。一、性能优化。二、高级UI。三、JNI/NDK开发。四、架构师。五、RN开发。这也许将会是我的进阶趋势。早已知道在瓶颈期的我,似乎看到了突破的希望的。其实,关注我的或者在群里的小伙伴也知道,UI那块我问题不大。但是高级UI转载 2017-11-20 11:05:12 · 236 阅读 · 0 评论 -
RxJava 从入门到放弃再到不离不弃
作者寄语很久之前就想写一个专题,专写Android开发框架,专题的名字叫 XXX 从入门到放弃 ,沉淀了这么久,看过网络诸多大神的博客,静下心来开始写这个专题,为什么叫入门到放弃呢;相信大家学习新框架的时候,尤其是像Rxjava或者Dagger等等这种新的编程思想;需要一定的阅读理解能力和思维逻辑;那么本专题旨在帮助大家不要太过急功近利,不要被冗长的代码和文章,晦涩的思想所打败,相信大转载 2017-11-24 10:56:49 · 445 阅读 · 0 评论 -
Android 图片压缩之多种压缩方式结合使用
如题,多种压缩方式常用的有尺寸压缩、质量压缩以及通过JNI调用libjpeg库来进行压缩,三种方式结合使用实现指定图片内存大小,清晰度达到最优,下面就先分别介绍下这几种压缩方式。1. 质量压缩设置bitmap options属性,降低图片的质量,像素不会减少第一个参数为需要压缩的bitmap图片对象,第二个参数为压缩后图片保存的位置设置options 属性0-100,来实现压缩pu转载 2017-12-21 15:29:06 · 275 阅读 · 0 评论 -
Android应用开发中三种常见的图片压缩方法
Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法、比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩)。一、质量压缩法private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream原创 2017-12-21 15:36:08 · 300 阅读 · 0 评论 -
AndroidStudio3.0 Android Profiler分析器(cpu memory network 分析器)
Android Profiler分为三大模块: cpu、内存 、网络。基本的使用在上一篇文章有讲到。这里详细说一下。一、 CPU分析器CPU ProfilerCPU分析器可帮助您实时检查应用程序的CPU使用情况和线程活动,并记录方法跟踪,以便您可以优化和调试应用程序的代码。要打开CPU Profiler,请按照下列步骤操作:点击 View > Tool Window转载 2017-12-26 15:08:51 · 540 阅读 · 0 评论 -
RxJava 和 RxAndroid 五(线程调度)
RxJava 和 RxAndroid 一 (基础)RxJava 和 RxAndroid 二(操作符的使用)RxJava 和 RxAndroid 三(生命周期控制和内存优化)RxJava 和 RxAndroid 四(RxBinding的使用)本文将有几个例子说明,rxjava线程调度的正确使用姿势。例1123转载 2018-01-04 17:48:31 · 216 阅读 · 0 评论 -
熟悉而陌生的Application类
前言Applicaiton类在 Android开发中非常常见,可是你真的了解Applicaiton类吗? 本文将全面解析Applicaiton类,包括特点、方法介绍、应用场景和具体使用,希望你们会喜欢。目录 1. 定义代表应用程序(即 Android App)的类,也属于Android中的一个系统组件 继承关系:继承自 ContextWarpper 类 ...转载 2018-01-09 15:25:46 · 302 阅读 · 0 评论 -
这可能是最好的性能优化教程(一)
前言性能检测与分析,一直在 APP 开发中相当重要,但又被我们常常忽略。很多 APP 或者开发者总是急功近利,总想着快速充实 APP 的相关功能,把开发进度放在首位没有问题,可很多时候就没有然后了,这在整个开发界屡见不鲜。在这样的大背景下,加之我之前写的 RxJava 2.0 系列 收到较好的反馈,诱导我想出这么一个性能优化系列。一些你可能需要知道的了解我的知道,我出的系列基本都是比较基础转载 2017-10-20 10:57:24 · 427 阅读 · 0 评论