Skip to content

Commit

Permalink
完成Q&A
Browse files Browse the repository at this point in the history
  • Loading branch information
rightgenius committed Apr 13, 2016
1 parent 571abbd commit 739fad1
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
4 changes: 3 additions & 1 deletion docs/Components.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,9 @@ Pan.with(getActivity(), MainViewModel.class)

## Controller

Controller的基本用法很简单,可以直接继承GeneralController,并通过泛型指定绑定的ViewModel
Controller的职责监控各类交互/生命周期事件,并决定何时调用ViewModel的render。

用法也很简单,可以直接继承GeneralController,并通过泛型指定绑定的ViewModel

```Java
public class MainController extends GeneralController<MainViewModel> {
Expand Down
20 changes: 14 additions & 6 deletions docs/常见问题.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,26 @@

## ViewModel什么时候被销毁?

//TODO
一般来说,开发者无需关心ViewModel的生命周期。如果开发者没有额外保留引用,ViewModel会被绑定的rootView使用Tag的方式保留引用。当View被销毁时,ViewModel会被一并销毁。


## 为什么没有监控OnCreate生命周期
## Pan的工厂方法调用时机只能在OnCreate中嘛

//TODO
对于直接用于Activity页面最高层级上布局ViewModel,```Pan.with...```应该选择在OnCreate中调用。当然放在OnStart/OnResume理论上也能工作,但其对OnStart/OnResume的事件监听会受影响。例如在OnResume中调用,会导致Controller无法监听到OnStart和OnResume事件。

对于用于Adapter内的ViewModel,由于其一般不需要监听Activity生命周期,所以不是特别要紧。

对用于Fragment页面上最高层级的布局ViewModel,也同样需要在onCreateView中使用,以尽可能的给Controller监听更多事件的可能。

## 全量刷新和局部刷新?

//TODO
对于一个ViewModel是全量刷新,对于一个页面,各个部位的ViewModel局部刷新。
ViewModel只有一个render方法,因此,对于ViewModel来说,每次Controller调用render都相当于是全量刷新。可能有人会担心全量刷新有点浪费性能,但在实际使用的过程中,一个页面往往是由多层级的多个ViewModel构成,每个ViewModel的全量刷新,实际上相当于整个页面中的局部刷新,这反而在让代码鲁棒性大大增强的同时,尽可能兼顾了性能。这样做有很多好处,例如:

1. Controller无需关心该刷新那个局部位置,而只需要控制ViewModel的数据状态,剩下的交给render
2. 每次render将把所有的数据状态变化都显示出来,避免开发者忘记更新某个局部
3. 对于整个页面来说,最高层的ViewModel无需关系其包含的其他ViewModel具体如何刷新,只需关心自己的刷新逻辑


## RxJava?
//TODO

Pan只要求Controller去控制ViewModel的render时机,但并不关心如何做到这一点。因此,RxJava/RxAndroid是可以直接在Pan的框架内使用,且没有任何阻碍的,而且,我们团队一直以来都是在这么做。
2 changes: 1 addition & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ pages:
- 插件系统: 拓展_插件系统.md
- MVVM和MVP: MVVM_MVP.md
- 集成Data-Binding: 集成Data-Binding.md
- 常见问题: 常见问题.md
- Q & A: 常见问题.md

0 comments on commit 739fad1

Please sign in to comment.