Home
Belin Wu
Cancel

小心 getLaunchIntentForPackage() 方法

应用中响应 android.intent.action.MAIN 和 android.intent.category.LAUNCHER 在本文中称为主界面。 本文基于 Android O 问题现象 用PackageInstaller安装应用,在安装完成界面里点击打开,应用闪屏页打开后,按Home键回到桌面,点击桌面里的应用图标。 问题点:再打开一个闪屏页...

剖析Android架构组件之ViewModel

ViewModel 是 Android 架构组件之一,用于分离 UI 逻辑与 UI 数据。在发生 Configuration Changes 时,它不会被销毁。在界面重建后,方便开发者呈现界面销毁前的 UI 状态。 本文主要分析 ViewModel 的以下3个方面: 获取和创建过程。 Configuration Changes 存活原理。 销毁过程。 1. 依赖库 i...

初学Android架构组件之ViewModel

在 Android 中,Activity 和 Fragment 这类 UI 组件会被系统销毁或重建,未特殊处理的 UI 数据将会丢失。以往处理这类问题时,会使用 onSaveInstanceState() 保存 UI 数据,在 onCreate() 方法里恢复 UI 数据,但是数据的大小和类型有限制。 看看下面的2个问题: 对于因手机 Configuration Changes 而...

组合优于继承

《Effective Java 中文版第2版》书中第16条中说到: 继承是实现代码复用的有力手段,但它并非永远是完成这项工作的的最佳工具。 继承有什么问题? 继承打破了类的封装性,子类依赖于父类中特定功能的实现细节。 继承什么时候是安全的 在包的内部是用继承,不存在跨包继承。 专门为了扩展而设计,并且具备很好的文档说明。 一个例子 实现这样一个HashSet...

初学Android架构组件之Lifecycle

在开发应用时,我们可能会基于一系列的生命周期实现某种功能。为了复用,也为了不让应用组件变得很臃肿,实现该功能时会选择与生命周期组件解藕,独立成一种组件。这样能够很方便地在应用组件中使用,比如:Activity、Fragment 或 Service。 Android 官方把它叫做 lifecycle-aware 组件,这类组件能够感知应用组件生命周期的变化,避免一连串显性的生命周期方法委托调...

初学Git工作流程

(文中图片均来源于网络) Git Git已是代码版本管理的标配,其分布式、多分支功能让人印象深刻。 Git工作流程(Git Workflow) 当项目需要多人共同开发时,规范工作流程就变得越来越重要。合适的工作流程能让多人协同开发更加顺利和高效。 目前主流的Git工作流程有三种: Git Flow(版本发布) GitHub Flow(持续发布) GitLab...

初学RxJava

什么是RxJava? 这个名词包含两部分: Rx(是ReactiveX、Reactive Extensions、Reactive Programming的简称):An API for asynchronous programming with observable streams. Java: Rx在JVM上实现。 在RxJava的GitHub里官方给出了这样的示意: ...

让我心动的Kotlin

Kotlin是一门务实、简洁和安全的语言,专注于互操作性。 注:本文基于Kotlin 1.3编写。 Hello world! fun main() { // 1 println("Hello world!") // 2 } 1 支持定义 top-level 函数,告别工具类。 fun关键字定义函数,参数声明格式是:name: Type。 main函数是程序执行的主入口...

Android ImageView的scaleType属性

ImageView 的 android:scaleType 属性的含义如下: 控制如何调整图片大小和图片位移以匹配 ImageView 的大小(即宽和高)。 它有以下几个值: 属性值 代码值 center ImageView.ScaleType.CENTER ...