The DEV Lyrics.

Thinking will not overcome fear but action will.

进程保活

进程保活

由于现在的 android 系统越来越“智能”了,几乎市面上所有的进程保活都渐渐失效,像微信之类的通过手机管家清理后就再也醒不过来了。我们可以学习一下这些进程保活机制来了解一下进程的相关知识。 为啥需要进程保活 其实进程保活不仅占用内存还耗电,感觉有点流氓。但是有些存在感不高的应用可能用户安装一次就不会打开了,但是如果进程被保活的话,就可以接受推送,引导用户使用,同时也可以收集用户的一些位...

AIDL

AIDL使用讲解

AIDL 是什么 AIDL(Android Interface Definition Language)安卓接口定义语言用于定义客户端与服务器端的通信接口,目的是为了实现跨进程通信。 AIDL 语法 aidl 文件以 .aidl 为后缀 aidl 支持的数据类型: 8种基本数据类型:short、int、long、float、double、byte、char、...

深入解析AIDL

aidl 调用过程 从上一篇文章中可以知道,客户端绑定服务后,会在 onServiceConnected() 拿到 IBinder,然后通过调用 IAvengerAidlInterface.Stub.asInterface(service) 将 IBinder 转换成IAvengerAidlInterface。然后通过它来调用 addAvenger 等方法。这个过程都是在编译 aidl 文件...

LruCache

源码讲解

LruCache 是什么 Lru(Least Recently Used)近期最少使用算法是将近期最少使用的数据从缓存中移除。它主要是用于取代 SoftReference 的。其实 LruCache 内部仅仅是对 LinkedHashMap 的封装,Lru 也是由 LinkedHashMap 实现的。 LruCache 中做的主要操作是设置缓存大小,然后在往缓存放数据的时候,如果超过所设置的...

photoshop

记录一些平常使用的小技巧

如何给图片增加一层半透明蒙版 将图片拖进 photoshop 中,这时图片是锁定的,点击🔒进行解锁。 notice:有些图片点击无法解锁,这时在菜单栏上选择 “图像”->“模式”->“RGB 颜色” 然后再点击锁进行解锁。 点击下面的图标,新建一个图层。 点击新图层,按住 “alt” + “del” 来填充新的图...

判断应用被强杀

原理 应用在后台被强杀时,该应用的整个进程都被销毁了,但是 Activity 栈并没有被清掉。那么我们点击桌面图标进入应用时,会重新创建 Application, 然后创建栈顶的 Activity。 如何判断 既然强杀后,进入应用只会初始化 Application 和栈顶 Activity,那么我们只需要在 Application 中创建一个静态变量,然后在闪屏页面去修改该值。后面的 Ac...

Fiddler抓包工具

简介 Fiddler 是一个 http 抓包工具,具有以下功能: 能够记录客户端和服务器之间的所有 HTTP 请求,针对 HTTP 请求分析请求数据,设置断点等。 能够修改请求的数据,并能实现请求自动重定向,从而修改服务器返回的数据。 场景 本文主要介绍如何用 fiddler 抓取 android 手机上的请求。 配置 配置 Fiddler 安装完后,点击菜单栏上的 Too...

Bound Services

bound Service(绑定服务)是 client-server 模式中的 server。它允许组件绑定到服务,发送请求,接收饭后结果并执行 IPC。 绑定服务只有当它服务于别的组件的时候才会存活,并且不会一直在后台运行。 Note: 如果你的 app 是 5.0(API level 21) 以上,推荐你使用 JobScheduler来执行后台 services。 创建绑...

Service

全面讲解 Service 和 IntentService

这几天回顾了下 Service,查了一些国内外相应的文档,发现其实大多数国内的文档都只是简单的讲下 Service 的两种启动方式而已,并不是很全,所以决定写一下这方面的文档供参考。本文主要参考 google 的 Service 官方文档。 什么是Service 它是一个在后台(即不提供用户界面)执行长时间操作的应用组件。服务可由其他应用组件启动,即使用户切换到其他应用,服务仍将在后台继续...

TraceView 解决界面卡顿

TraceView 找到耗时方法

TraceView 是什么 它是一个数据采集和分析工具,当我们界面出现卡顿的时候,可以通过它找到出现问题的方法。一般我们会关注2个问题: 哪些方法很耗时,哪些方法调用的次数很多。方法很耗时的话,会造成界面卡顿的现象,而方法不耗时但调用的次数过多会导致 CPU 频繁调用导致手机发热问题。 怎样判断一个方法是否耗时 我们知道,人眼与大脑之间的协作无法感知超过 60fps 的画面更新,所以应用程...