# AndroidContainerCenter **Repository Path**: dali-Y/ContainerCenter ## Basic Information - **Project Name**: AndroidContainerCenter - **Description**: No description available - **Primary Language**: Kotlin - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-22 - **Last Updated**: 2021-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## AndroidContainerCenter #### 用法请参考app和testlibrary的代码 #### 依赖 添加如下配置在项目的build.gradle ``` repositories { ... maven { url 'https://jitpack.io' } } ``` 添加如下依赖在需要使用的module的build.gradle ``` dependencies { implementation 'com.gitee.dali-Y:ContainerCenter:v0.0.1' } ``` > PageApp:页面应用对象协议 > IPageProvider:页面应用信息提供者协议 > IContainer:容器协议 > ContainerManager:容器管理器 #### PageApp 页面应用对象协议页面应用是各个页面的对象化封装,每一个应用对应的是移动开发平台上的一条数据。 分为PageApp和WebApp,PageApp可是是Native页面也可以是Web页面;WebApp是PageApp的细化封装,代表的是一个Web页面。 > 基本属性: - name: 页面名 - identifier: 页面id - containerName: 页面归属的容器名 - version: 页面的版本 - iconUrl: 页面的icon地址 - linkUrl: Web页面的在线地址 - resourceUrl: Web页面的Zip资源地址 - resourceMD5String: Web页面的Zip资源MD5值 #### IPageAppProvider 页面应用信息提供者协议 页面应用信息提供者是对页面管理流程的封装, 主要职责是管理每个版本的页面信息的下载和更新,以及Web页面的资源的下载和更新。 > 核心接口: - 获根据页面id和版本获取本地缓存的页面完整信息 fun pageApp(identifier: String, version: Int,success: (pageApp: PageApp) -> Unit,failed: (error: String) -> Unit) - 根据页面id和版本获取页面完整信息 version=0: 表示获取最新版本,此依赖本地缓存策略, 当本地有缓存时返回缓存中最大版本,无则从远端获取(依赖远端的下发策略) fun fetchPageApp(identifier: String,version: Int,success: (pageApp: PageApp) -> Unit,failed: (error: String) -> Unit) - 获取Web页面的本地资源路径 fun resourceFilePath(webApp: WebApp, success: (fileUrl: String) -> Unit) - 下载Web页面的本地资源路径 接口中提供页面资源的下载回调,以供页面展示资源的下载进度 fun downloadResource(webApp: WebApp,progress: (progress: Int) -> Unit,success: (fileUrl: String) -> Unit,failed: (error: String) -> Unit) #### IContainer 容器是对各个供应商SDK的对象化封装,其基本职责是提供和渲染自己的容器页面 > 核心封装: - 容器名: 每个容器都有独立的容器名 fun getName(): String - 容器外在的体现就是启动各种页面,requestCode不等于-1时,需要startActivityForResult fun startPage(activity: Activity, pageId: String, param: Bundle?, requestCode:Int = -1) fun startPage(activity: Activity, pageApp: PageApp, param: Bundle?, requestCode:Int = -1) - 或者提供fragment fun getPageFragment(pageId: String, param: Bundle?): Fragment fun getPageFragment(pageApp: PageApp, param: Bundle?): Fragment > 核心接口: - 容器名 fun getName(): String - 获取容器页面(一) 通过页面id获取页面对象,以供页面管理栈调用 fun startPage(activity: Activity, pageId: String, param: Bundle?, requestCode:Int = -1) - 获取容器页面(二) 通过页面App对象获取页面对象,以供页面管理栈调用 fun startPage(activity: Activity, pageApp: PageApp, param: Bundle?, requestCode:Int = -1) #### ContainerManager 容器管理器容器管理器的管理容器对象,和提供获取容器页面的快捷接口,同时管理“页面应用信息提供者”