android

$ SELECT * FROM posts WHERE category='android'

为什么应该使用本地广播(LocalBroadcastManager)

从 Android 诞生已来,就一直有所谓的四大组件,BroadcastReceiver 是其中之一。 几乎在各种样的应用中都有 BroadcastReceiver 的使用,它被应用于接收系统发送的消息以及与其他应用之间的交互,但也被大量的误用于应用内部通信。 然而在同应用中使用则违背 BroadcastReceiver 的设计用途及理念。

全局 Broadcast 在应用内使用的缺陷

在 Google 的开发指南中清楚的描述了 Broadcast 用于接受来自系统的消息,例如:系统启动、开始充电、应用安装等,那么,它的本质就是一个类似于发布定阅模式用于跨进程的通信机制。这代表了,在进程内部去使用这样一种全局的通信机制,是不合适的,以下选取了几个侧面来进行说明。

  • 全局的 Broadcast 是不隐私的,其他应用可能获取到应用内部通过 Broadcast 发送的隐私信息,无论我的 Intent Filters 是在 Manifest 文件里声明还是动态的注册,作为字符串常量,他们都不会被混淆 …

通过 Android 辅助功能「Accessibility Service」 检测任意前台界面

前两周看到大牛 @闭关写代码 发微博总结了在 Android 里判断 APP 是否处于前台的方法总结, 并把它们整合成了一个工具库 AndroidProcess。 我看了项目觉得总结得非常全面, 其中读取 /proc 进程信息的方法我们挺久以前就有所利用,确实算是一定意义上的“黑科技”。 @闭关写代码 已经总结的方案如下:

foreground method list

我转发了微博并说 “......其实我知道的还有方法六......”,昨天 @闭关写代码 询问我第六种方法, 这让我觉得也不应该私藏,还是把这些干货抖出来吧。

Android 辅助功能(AccessibilityService) 为我们提供了一系列的事件回调,帮助我们指示一些用户界面的状态变化。 我们可以派生辅助功能类,进而对不同的 AccessibilityEvent 进行处理。 同样的,这个服务就可以用来判断当前的前台应用,这就是我所谓的“方法6”。

优势

  • AccessibilityService 有非常广泛的 ROM 覆盖,特别是非国产手机,从 Android API Level 18(Android 2 …

如何创建兼容的 Foreground drawable selector,实现layout点击效果

Material Design发布后, 越来越多的开发者将其设计规范融入到APP中。 ripple 的涟漪点击效果就是其中之一, 有一些控件已经支持了 ripple 属性,怎么样将 ripple 效果放到 layout 上并且实现不同API Level的兼容呢? 网上有一些实现,如 RippleEffect,兼容性非常不错, 但其 ripple 效果会直接改变前景色,例如在其中放置一个 TextView 元素, 点击 ripple 效果同样会遮蔽文字的颜色。 那么有没有不需要使用自定义控件,实现兼容的点击效果呢? 答案是:有的。

接下来我们使用 View 的 foreground 属性来实现兼容的界面元素点击效果。因为 forground 属性是 View 类的一个属性, 所以此方案可以用于任意派生自 View 的界面控件。 我们要实现的效果如下:

实现效果

API Level 21 (Android …

Latest Posts

为什么应该使用本地广播(LocalBroadcastManager)

从 Android 诞生已来,就一直有所谓的四大组件,BroadcastReceiver 是其中之一。 几乎在各种样的应用中都有 BroadcastReceiver 的使用,它被应用于接收系统发送的消息以及与其他应用之间的交互,但也被大量的误用于应用内部通信。 然而在同应用中使用则违背 Broadc

通过 Android 辅助功能「Accessibility Service」 检测任意前台界面

前两周看到大牛 @闭关写代码 发微博总结了在 Android 里判断 APP 是否处于前台的方法总结, 并把它们整合成了一个工具库 AndroidProcess。 我看了项目觉得总结得非常全面, 其中读取 /proc 进程信息的方法我们挺久以前就有所利用,确实算是一定意义上的“黑科技”。 @闭关写代

如何创建兼容的 Foreground drawable selector,实现layout点击效果

Material Design发布后, 越来越多的开发者将其设计规范融入到APP中。 ripple 的涟漪点击效果就是其中之一, 有一些控件已经支持了 ripple 属性,怎么样将 ripple 效果放到 layout 上并且实现不同API Level的兼容呢? 网上有一些实现,如 RippleEf