基础04-LiveData
LiveData
LiveData的观察者
1 | fun interface Observer<T> { |
- 通过
onChanged函数分派数据变化
成员
1 | /* synthetic access */ |
1 | fun interface Observer<T> { |
onChanged函数分派数据变化1 | /* synthetic access */ |
在了解ViewModel之前,我们先来了解一下MVC, MVP, MVVM的发展Difference Between MVC, MVP and MVVM Architecture Pattern in Android
1 | interface ViewModelStoreOwner { |
ViewModelStoreOwner的类会有一个viewModelStore属性ViewModel时会传递这个变量,具体传递方式在见by viewModels()ViewModelStoreOwner的直接子类有: ComponentActivity, Fragment 和 NavBackStackEntry1 | public interface LifecycleObserver |
lifecycle.addObserver()时,可以传入LifecycleEventObserver或DefaultLifecycleObserver,一个通过event获取当前状态,一个通过不同的回调函数获取当前状态1 | Activity -- AccountAuthenticatorActivity |
1 | java.lang.VerifyError: Verifier rejected class com.xiaomi.market.util.UIUtils: void com.xiaomi.market.util.UIUtils.setStatusBarDarkMode(android.app.Activity, boolean) failed to verify: void com.xiaomi.market.util.UIUtils.setStatusBarDarkMode(android.app.Activity, boolean): [0x15] type Undefined unexpected as arg to if-eqz/if-nez (declaration of 'com.xiaomi.market.util.UIUtils' appears in /data/app/~~pH0reBrzyfvMag1T-TAoDw==/com.xiaomi.market-EzZXS_MznmhQs5NCCbvqfA==/base.apk!classes2.dex) |
在xiaomi商店中使用了Lmiui/os/Build类,该类继承Landroid/os/Build,且存在于小米系统中,导致类找不到。导致运行时闪退。
对于这类小米系统中才能获取到的类,采用等价替换的方法进行修复。如在Lmiui/os/Build中有:
Context是抽象类,具体实现在ContextImpl,Application,Service,Activity都直接或间接继承自ContextWrapper,ContextWrapper通过代理的方式调用真正的ContextImpl。
1 | /** @hide */ |
创建 RelativeLayout 时,请务必为视图对象定义 ID。在相对布局中,同级视图可以定义其相对于通过唯一 ID 引用的另一个同级视图的布局。
ID 不必在整个树状结构中具有唯一性,但在您搜索的树状结构部分中必须是唯一的。它通常可能是整个树,因此最好尽可能使其具有唯一性。
findViewById是View的方法1 | /** |
在flutter中,所有看得见的看不见的东西都是widget
根项目和任意数量的子项目。| 文件/目录名称 | 作用 |
|---|---|
| gradlew/gradlew.bat | Gradle 包装脚本 |
| build.gradle(.kts) | 项目的 Gradle 构建脚本 |
| settings.gradle(.kts) | Gradle 设置文件用于定义根项目名称和子项目 |
| src | 项目/子项目的源码、资源 |
编译
1 | ./gradlew build |
编译单个任务
1 | ./gradlew :taskname |
编译单个任务以及全部依赖
编译多项目工程中的任务
1 | ./gradlew :subproject:taskName |
:相当于分隔符,第一个冒号可以省略
清理产物
1 | ./gradlew clean |
执行多个任务
1 | ./gradlew clean build |