闭卷重建单一事实源与UI状态的对象、公式、算例、算法与失败边界。
移动计算与安卓系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建ViewModel与作用域的对象、公式、算例、算法与失败边界。
闭卷重建单向数据流与Reducer的对象、公式、算例、算法与失败边界。
闭卷重建导航、深链与任务栈的对象、公式、算例、算法与失败边界。
闭卷重建资源、语言与国际化的对象、公式、算例、算法与失败边界。
闭卷重建错误、加载与空状态的对象、公式、算例、算法与失败边界。
闭卷重建模块边界与依赖方向的对象、公式、算例、算法与失败边界。
对象:ViewModel跨配置变化但随owner最终销毁,不保证进程死亡;作用域决定共享与清理。;公式:lifetime tied to ViewModelStoreOwner, not process durability。;算例:旋转后Activity重建可复用ViewModel;进程被杀后需SavedState/数据库恢复。;边界:ViewModel持有Activity引用;把它当全局单例。。
对象:UI状态应由可持久数据、业务规则和瞬时输入推导,避免多个可变副本竞争。;公式:uiState=reduce(previous,event,data result)。;算例:数据库订单为Paid而内存副本仍Pending,两个事实源导致错界面。;边界:Repository和ViewModel各缓存可写状态且无版本。。
对象:导航图、系统task/back stack与深链入口共同决定返回路径和身份校验。;公式:deep link valid=route match∧input validation∧authorization。;算例:深链资源ID合法但当前用户无权访问,必须拒绝而非导航展示。;边界:只在正常页面入口做授权;恶意Intent绕过前置步骤。。
对象:事件进入Reducer生成新状态,副作用在边界执行并把结果再作为事件输入。;公式:state_{t+1}=reduce(state_t,event_t)。;算例:计数state=2,事件Increment得到3;重复事件会再得4,需业务幂等另定义。;边界:Reducer里直接启动网络导致不可复现;事件丢失无审计。。
对象:UI需区分首次加载、刷新、空结果、离线缓存、可重试/永久错误和部分内容。;公式:render state is algebraic sum, not unrelated booleans。;算例:hasData=true且refreshing=true应显示旧数据加刷新指示,而非全屏空白。;边界:loading/error/empty三个布尔可同时真;错误清空可用缓存。。
对象:文本、复数、日期数字、RTL和排序需按locale;翻译后长度与语法变化。;公式:display=format(value,locale,timezone,plural category)。;算例:1 item与2 items在英语类别不同;其他语言复数规则不只两类。;边界:字符串拼接词序固定;服务端本地时间被当UTC。。
对象:UI、领域、数据和平台模块按接口依赖,变化频率和复用决定模块而非目录数量。;公式:dependency points inward to stable policy where applicable。;算例:领域模块依赖Android Context会阻碍纯测试和复用,应由外层适配。;边界:每个屏幕拆十几个模块;共享模块成为全局杂物箱。。