# AIAndroid **Repository Path**: bsman/aiandroid ## Basic Information - **Project Name**: AIAndroid - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-23 - **Last Updated**: 2025-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Android MVVM 架构示例 这是一个完整的Android MVVM架构示例,基于Java语言开发,展示了现代Android开发的最佳实践。 ## 架构特点 ### 🏗️ MVVM 模式 - **Model**: 数据层,包含数据模型和Repository - **View**: UI层,包含Activity和Fragment - **ViewModel**: 业务逻辑层,连接View和Model ### 🌐 网络层 (OkHttp + Retrofit) - **OkHttpClientManager**: 统一管理OkHttp客户端 - **RetrofitManager**: 统一管理Retrofit实例 - **RxHelper**: 网络请求结果处理工具 - **ApiException**: 统一异常处理 ### 📂 项目结构 ``` app/src/main/java/com/example/mvvmdemo/ ├── base/ # 基础类 │ ├── BaseActivity.java # Activity基类 │ ├── BaseFragment.java # Fragment基类 │ └── BaseViewModel.java # ViewModel基类 ├── model/ # 数据模型 │ ├── BaseResponse.java # 网络响应基类 │ └── User.java # 用户数据模型 ├── network/ # 网络层 │ ├── ApiService.java # API接口定义 │ ├── ApiException.java # 异常处理 │ ├── NetworkConfig.java # 网络配置 │ ├── OkHttpClientManager.java │ ├── RetrofitManager.java │ └── RxHelper.java ├── repository/ # 数据仓库层 │ ├── BaseRepository.java │ └── UserRepository.java ├── ui/ # UI层 │ ├── activity/ # Activity │ ├── adapter/ # 适配器 │ └── fragment/ # Fragment ├── utils/ # 工具类 │ ├── LogUtil.java # 日志工具 │ └── EmptyDataHandler.java ├── viewmodel/ # ViewModel层 │ └── UserViewModel.java └── MyApplication.java # 应用入口 ``` ## 🔧 核心功能 ### 1. Base基础类 - **BaseActivity**: 提供DataBinding、ViewModel初始化、生命周期管理 - **BaseFragment**: Fragment的基础功能封装 - **BaseViewModel**: 统一的加载状态管理、RxJava Disposable管理 ### 2. 网络请求封装 - **完美的错误处理**: 统一的异常处理机制 - **自动线程切换**: 自动在IO线程请求,主线程回调 - **日志管理**: 可开关的网络请求日志 - **超时配置**: 可配置的连接、读取、写入超时 ### 3. 数据绑定 - **双向数据绑定**: 使用DataBinding实现View和ViewModel的双向绑定 - **LiveData观察**: 响应式的数据更新机制 - **状态管理**: 统一的加载、错误、空数据状态管理 ### 4. UI数据为空重新请求机制 - **EmptyDataHandler**: 空数据处理接口 - **自动重试**: ViewModel提供retry方法 - **状态切换**: 加载中、成功、失败、空数据状态自动切换 ### 5. 日志系统 - **LogUtil**: 统一的日志管理工具 - **开关控制**: 可通过BuildConfig.DEBUG控制日志开关 - **分级日志**: 支持Debug、Info、Warning、Error级别 ## 📱 使用示例 ### 1. 创建Activity ```java public class MainActivity extends BaseActivity { @Override protected int getLayoutId() { return R.layout.activity_main; } @Override protected Class getViewModelClass() { return UserViewModel.class; } @Override protected void initView() { // 初始化View } @Override protected void initData() { // 初始化数据 } @Override protected void initObserver() { // 观察ViewModel数据变化 } } ``` ### 2. 创建ViewModel ```java public class UserViewModel extends BaseViewModel { public void loadUsers() { showLoading(); userRepository.getUsers() .subscribe(new Observer>() { @Override public void onNext(List users) { if (users.isEmpty()) { showEmpty(); } else { showSuccess(); userListData.setValue(users); } } @Override public void onError(Throwable e) { showError(e.getMessage()); } }); } } ``` ### 3. 网络请求 ```java public class UserRepository extends BaseRepository { public Observable> getUsers() { return apiService.getUsers() .compose(RxHelper.handleResult()); } } ``` ## 🛠️ 配置说明 ### 1. 网络配置 在`NetworkConfig.java`中配置: - BASE_URL: 服务器地址 - 超时时间配置 - 请求头配置 ### 2. 日志开关 在`MyApplication.java`中: ```java LogUtil.setDebugMode(BuildConfig.DEBUG); ``` ### 3. 依赖库版本 主要依赖库: - androidx.lifecycle: 2.7.0 - retrofit2: 2.9.0 - okhttp3: 4.12.0 - rxjava3: 3.1.8 ## ✨ 特色功能 1. **完整的MVVM架构**: 清晰的分层架构,职责分明 2. **统一的状态管理**: 加载、成功、失败、空数据状态统一处理 3. **完善的错误处理**: 网络异常、业务异常统一处理 4. **可配置的日志**: 开发和生产环境日志开关 5. **UI数据为空重试**: 用户友好的重试机制 6. **响应式编程**: RxJava3 + LiveData 响应式数据流 7. **代码规范**: 清晰的包结构和命名规范 这个架构为Android项目提供了一个坚实的基础,可以快速开发高质量的Android应用。