为减少写重复代码
把简单的事情程序化 把复杂的事情程序化 把重复的事情程序化 一切为了效率(偷懒)
- MVC/MVP/MVVM
MVVM = (ViewBinding/DataBinding)+ViewModel+LiveData
- Retrofit- REST API Call
- Glide - Image Loading and caching.
- koin - Dependency Injection
- gson - json serialization/deserialization
- Android Jetpack
- Material Design Components - Google's latest Material Components.
Android SDK 升级助理是 Android Studio 中的一款工具,可帮助您升级 targetSdkVersion(即应用的目标 API 级别)。请务必及时更新您的 targetSdkVersion,以便使用该平台的最新功能。Android Studio Giraffe 及更高版本中提供了 Android SDK 升级助理。 https://developer.android.com/build/sdk-upgrade-assistant?hl=zh-cn
- 使用
Navigation
代替ARouter
- 用
start_up
代替Application
中初始化- 隐私政策,可以分阶段初始化,比如登录后才初始化
- 拦截网页的请求,或者动态添加vConsole
- 注解+ASM
- 应用模块
- 数据模块
- 功能模块
- 通用模块
- 界面模块
- 网络模块
- 辅助模块
- 通信模块(中介模块):用于模块间的通信
- DataStore 非常适合存储键值对,例如用户设置,具体示例可能包括时间格式、通知偏好设置,以及是显示还是隐藏用户已阅读的新闻报道。DataStore 还可以使用协议缓冲区来存储类型化对象。
- 借助 WorkManager,可以轻松调度异步的可靠工作,并可以负责管理约束条件。我们建议使用该库执行持久性工作。为了执行上面定义的任务,我们创建了一个 Worker 类:RefreshLatestNewsWorker。此类以 NewsRepository 作为依赖项,以便获取最新新闻并将其缓存到磁盘中。
- 为了保护来自不同线程的读取和写入操作,我们使用了 Mutex。
- async 用于在外部作用域内启动协程。await 在新的协程上调用,以便在网络请求返回结果并且结果保存到缓存中之前,一直保持挂起状态。如果届时用户仍位于屏幕上,就会看到最新新闻;如果用户已离开屏幕,await 将被取消,但 async 内部的逻辑将继续执行。
luanch
适用于“发射并忘记”,而async
适用于“异步并等待结果” - 数据和文件存储:room /DataStore/ File
- 将 Dispatcher 注入到类中,易于测试,因为您可以轻松替换它们进行单元测试和仪器测试。
- ViewModel/Presenter层应该创建自己的协程,方便取消
- ViewModel/Presenter 层下面的层应该公开挂起函数和 Flows
- 对于不应该取消的操作,请在 Application 类中创建您自己的作用域,并在由它启动的协程中调用不想被ViewModel/Presenter取消的代码。
- detekt:Detekt 是一种静态代码分析工具,用于检测 Kotlin 代码中的潜在问题和不规范的编码实践。它是为 Kotlin 语言开发的,并且可以帮助开发者发现可能导致错误、性能问题或代码可维护性下降的代码片段。
- spotless:Spotless 是一个开源的代码格式化和风格检查工具,可以帮助开发团队维持一致的代码风格和格式。