首页
Shen Lin
取消

Android Telephony 模块结构简析

本文永久链接:https://blog.linshen.me/posts/a-simple-analyse-of-android-telephony-related-modules 最近在公司被老大安排负责跟进通讯相关的一些问题,于是简单了解一下 Android 通讯相关的模块。 说实话,刚开始看的时候确实是一头雾水,因为设计的模块实在是太!多!了!要说多都还好,要命的是这些不同的模块还...

由 MTK 关机闹钟实现,浅析一种低侵入式修改 framework 方案

最近在修复一款 MTK 平台机器关机闹钟相关的 bug,简单了解了一下 MTK 关机闹钟的实现原理。发现相比于在 framework 里直接大动干戈,MTK 对框架的定制修改则采用了一种侵入性相对较小的方案,本文对这种方案进行了简单分析。 AlarmManger 实现关机闹钟 长期以来,AlarmManager 作为 Android 系统中掌管 Alarm 的组件,一直没有关机闹钟的原生实...

build.gradle,从 groovy 到 kts 迁移指南

先说结论 为什么要迁移?主要是因为现在够稳定了。而且说实话,大部分国内 andriod 开发者对 groovy也就是个依葫芦画瓢的水平,而 Kotlin 是 app 开发过程中的主要语言,是一定要熟练掌握的,现在 Gradle 插件开发也支持用 Kotlin 写了,迁过去之后也方便无缝学习插件开发,没必要硬着头皮再去啃 groovy。 迁移不难,但官方现在没有提供工具,没办法像 ...

使用 Statically 配合 Github 做一个带 CDN 的图床

Jekyll 写博客有个好处,就是可以直接调用 assets 下面的图片,但是部署到 Github 之后,由于众所周知的原因,在国内的访问速度可能会被图片加载拖慢,这个时候套上 Statically 可以加快访问速度,啪一下很快啊,一个图床就诞生了。 使用方法 把文章里要引用的图片,假设叫 screenshot.jpg,放到网站根目录的 assets/img/posts 。...

Apple Silicon Mac 找不到 jekyll 以及 webrick 错误的解决方案

周末入了一台 M1 芯片的 2020 款 Macbook Air,这两天陆陆续续把各种环境都搭得差不多了。 Ruby Ruby 方面,如果你使用 homebrew 安装,脚本会自动识别你的机器,我得到的是 3.0.1p64 版本,看起来这个版本已经是完整支持 Apple Silicon 的版本了。 $ ruby -v ruby 3.0.1p64 (2021-04-05 revision...

2016 Macbook Pro 13' 安装 AORUS GTX1080 8G Gaming Box 完整教程

最近为了吃鸡入了一块 AORUS GTX1080 8G Gaming Box,本来打算上 Dell 的 外星人Alienware ALPHA(阿尔法)R2,可是实在是太太太太太贵了,再加上当时买这台 Macbook 的时候我升到了 i7 + 16G RAM,感觉也没必要为此新买一台电脑,因为理论上来讲目前的配置,只差一块给力的显卡就能顺利吃鸡,于是就有了接下来要做的。 前言 因为苹果的一...

Android Architecture Components 入门(一)—— Android Room Library 简单使用

Google 在今年的 IO 大会重点介绍了它们最新推出的 Android Architecture Components,其中最重要的一个就是 Room。在 Ormlite、GreenDao,甚至 Realm 大行其道的今天,Google 自己也总算造了一口锅自己背上了(只求 Google 日后不要轻易弃坑)。 这篇文章没有太多深奥的源码分析,因为我下午看完官方文档之后,还是觉得有点复杂...

WDMyCloud 3T NAS 添加迅雷远程下载(Mac 用户)

WDMyCloud 买了将近一年时间了,本来准备只给 Mac 做 Time Machine 备份用的,奈何 3T 空间实在撑不满,多着也是浪费,再加上平时白天上班,家里带宽闲着也是闲着,于是今天折腾了一下给他添加了迅雷远程下载功能,亲测可用。 首先需要说明的是,网上大部分教程抄来抄去,几乎全是 Windows 下操作的版本,其实对于 Mac 用户而言,完全不用 PuTTY,因为 Mac 自...

解决 DialogFragment show() 方法导致的 IllegalStateException

问题 钱包 2.0.0_beta 版本上线之后,我们给新获得理财权限的用户增加了一个欢迎对话框。按照 Google 官方关于开发对话框时的指导,钱包把所有会用到的 Dialog 全部采用 DialogFragment 进行了封装,并且放到了一个包下进行管理。 DialogFragment 的用法非常简单,而且内部封装好了show() 方法,很容易就可以把对话框展现出来,就像这样 pub...

关于 AsyncTask 的常见问题(Common questions on AsyncTask )

本文由 Lin Shen 译自 Common questions on AsyncTask,原文作者 Colt McAnlis, 转载请务必注明出处! 关于 AsyncTask 的常见问题 我在 Google 工作最喜欢的一点,就是把一些比较复杂的概念,分解成一小部分一小部分,这样就可以确保每一位工程师都能清楚地理解。在我最近的《Android 性能优化典范》视频中,我提到了...