# 基于MVI架构的新闻聚合客户端 **Repository Path**: yakumo12/NewsStream ## Basic Information - **Project Name**: 基于MVI架构的新闻聚合客户端 - **Description**: 安卓课设 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-07 - **Last Updated**: 2026-06-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NewsStream 一款 Material 3 风格的 Android 新闻阅读应用,基于 Currents API 获取实时新闻,支持全文阅读、搜索和收藏管理。 ## 功能特性 - **新闻浏览** — 首页展示分类新闻,支持下拉刷新和分页加载 - **新闻详情** — 左右滑动切换文章,触底自动加载全文内容 - **全文抓取** — 自动解析文章链接,提取完整正文内容 - **搜索功能** — 关键词搜索新闻,支持搜索历史记录 - **收藏管理** — 收藏文章本地持久化,已收藏文章直接使用本地全文,避免重复网络请求 - **个人中心** — 管理搜索历史和收藏列表 ## 技术架构 | 层级 | 技术方案 | |------|---------| | UI | Jetpack Compose + Material 3 | | 架构模式 | MVI (Model-View-Intent) | | 依赖注入 | Hilt | | 网络请求 | Retrofit + OkHttp | | 本地存储 | Room | | 图片加载 | Coil 3 | | 导航 | Navigation Compose | | 解析 | Jsoup | ## 项目结构 ``` app/src/main/java/com/example/newsstream/ ├── data/ │ ├── api/ # 网络层(Retrofit API 定义、拦截器) │ ├── db/ # 数据库(Room Entity、DAO) │ ├── mapper/ # 数据映射器 │ └── repository/ # 仓库层(数据策略) ├── di/ # Hilt 依赖注入模块 ├── domain/model/ # 领域模型 ├── mvi/ # MVI 基础组件(BaseViewModel、BaseState 等) ├── ui/ │ ├── navigation/ # 导航图 │ ├── screen/ # 各页面(home、detail、search、favorites、profile、splash) │ └── theme/ # 主题配置 └── util/ # 工具类(日期、内容解析、错误处理等) ``` ## 构建与运行 1. 克隆项目 ```bash git clone ``` 2. 在 Android Studio 中打开项目 3. 同步 Gradle 依赖 4. 运行到设备或模拟器(minSdk 26 / Android 8.0+) > API Key 已配置在 `build.gradle.kts` 的 `buildConfigField` 中,开箱即用。 ## 测试 ```bash ./gradlew :app:testDebugUnitTest ```