Android Weekly Issue #403
OkHttp Interceptor - Making the most of it
Interceptor有两种类型(有个图很好):
- Application Interceptors. 应用代码和okhttp之间.
- Network Interceptors. okhttp和server之间.
实用情形:
- 错误日志.
- caching response.
- header like access token.
- refreshing token.
- enable Gzip at Android.
Multiple resource folders in Android
资源文件夹也可以分类整理.
要声明文件夹:
android {
[...]
sourceSets {
main.res.srcDirs += [
'src/main/java/your/package/name/res',
[...]
]
}
}
Showing the Android Keyboard Reliably
显示小键盘的可靠方法.
强制显示会有的问题.
进一步优化可以利用Kotlin的扩展方法.
Think before using BuildConfig.DEBUG
避免使用BuildConfig.DEBUG
:
- 利用flavors, 判断逻辑写两份代码.
- 定义变量, 每个flavor赋值不同.
- 如果只在debug的时候需要某个库, 其他flavor使用库的no-op版本.
- 利用proguard来移除production中的log.
见: https://medium.com/@trionkidnapper/stripping-log-statements-using-proguard-73dedc68ee97
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int d(...);
public static int i(...);
}
- 多个module的
DEBUG
可能并不一样, 要用ApplicationInfo.FLAG_DEBUGGABLE.
也不是完全不能用, 只是可以先考虑其他选择.
Android Styling: Themes Overlay
theme overlays.
Data Encryption on Android with Jetpack Security
Jetpack Security的用法.
可以用来加密文件和shared preferences.
master key被存在AndroidKeyStore里.
ViewBinding in Fragments: the clean & easy way
使用ViewBinding的一个辅助类.
- 更加安全.
- 简化代码.
- 生命周期结束的时候置null.
Simple one-liner ViewBinding in Fragments and Activities with Kotlin
用代理属性简化ViewBinding的bind.
Say no to BaseActivity and BaseFragment
使用BaseActivity和BaseFragment, 然后继承, 可能会导致基类很大, 不好扩展, 无法维护.
解决办法: 组合.
利用:
-
Application.ActivityLifecycleCallbacks
for Activities. -
FragmentManager.FragmentLifecycleCallbacks
for Fragments. - 利用Dagger Multibindings.
Code
- refactoringui/heroicons: 一个svg icon库.
News
Android 3.6:
- blog: https://android-developers.googleblog.com/2020/02/android-studio-36.html
- video: https://www.youtube.com/watch?v=h7dCm2lQLOg&feature=youtu.be
网友评论