Skip to content

Commit

Permalink
Remove init call update when created.
Browse files Browse the repository at this point in the history
  • Loading branch information
ittianyu committed Dec 28, 2018
1 parent 961f7e4 commit 1590a76
Show file tree
Hide file tree
Showing 20 changed files with 31 additions and 32 deletions.
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public class StatefulUserWidget extends StatefulWidget<View, UserWidget> {
widget.setOnClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));
update();
}
@Override
Expand Down Expand Up @@ -307,13 +308,14 @@ ThreadPool.set(executorService);

#### Widget ####

外部通过调用 `render` 方法,获得一个 View,进行渲染
- render: 外部通过调用 `render` 方法,获得一个 View,进行渲染
- update: 当 `StatefulWidget` 状态变更时,被动触发

#### StatelessWidget ####
需要实现一个 `Widget<T> build()` 方法,来完成 `Widget` 的构建

```
render(first call) -> build -> widget.render -> initWidget -> update
render(first call) -> build -> widget.render -> initWidget
```

#### state ####
Expand All @@ -328,7 +330,7 @@ onDestroy -> dispose
需要实现一个 `State<T> createState(Context context)` 方法 来构建一个 `State` 对象

```
render(first call) -> createState -> state.init -> state.build -> widget.render -> initWidget -> update
render(first call) -> createState -> state.init -> state.build -> widget.render -> initWidget
state.setState -> state.update -> widget.update
```
Expand All @@ -338,7 +340,7 @@ state.setState -> state.update -> widget.update
```
构造方法 -> createView
render(first call) -> initView -> initEvent -> initData -> update
render(first call) -> initView -> initEvent -> initData
```

#### Lifecycle ####
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public void initView(View view) {
super.initView(view);
tvId = view.findViewById(R.id.tv_id);
tvName = view.findViewById(R.id.tv_name);
update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.ittianyu.relight.widget.stateful.StatefulWidget;
import com.ittianyu.relight.widget.stateful.state.State;

public class StatefulUserWidget extends StatefulWidget<View, UserWidget> implements View.OnClickListener, Runnable {
public class StatefulUserWidget extends StatefulWidget<View, UserWidget> {
private UserBean user = UserDataSource.getInstance().getUser();

public StatefulUserWidget(Context context, Lifecycle lifecycle) {
Expand All @@ -24,24 +24,15 @@ protected State<UserWidget> createState(Context context) {

@Override
public void initWidget(UserWidget widget) {
widget.setOnClickListener(this);
}

@Override
public void onClick(View v) {
setState(this);
}

@Override
public void run() {
//UserBean data = UserDataSource.getInstance().getUser();
//user.update(data);
user = UserDataSource.getInstance().getUser();
widget.setOnClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));
update();
}

@Override
public void update() {
super.update();
widget.setUser(user);
super.update();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public void initWidget(LinearWidget widget) {
.onClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));

update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void initWidget(FrameWidget widget) {
.onClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));

update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void initWidget(RelativeWidget widget) {
.onClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));

update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public void initWidget(LinearWidget widget) {
.onClickListener(v -> setStateAsync(() -> {
user = UserDataSource.getInstance().getUserFromRemote();
}));

update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public List<UserBean> getUsersFromRemote() throws NetworkErrorException {
}

// mock empty and error
switch (random.nextInt(3)) {
switch (random.nextInt(4)) {
case 0: {// empty
return Collections.emptyList();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public void initWidget(LinearWidget widget) {
.gravity(Gravity.CENTER)
.matchParent()
.onClickListener(v -> setStateAsync(updateTask));

update();
}

@Override
Expand Down
1 change: 1 addition & 0 deletions docs/base/1.AndroidWidget.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ public class UserWidget extends AndroidWidget<View> {
super.initView(view);
tvId = view.findViewById(R.id.tv_id);
tvName = view.findViewById(R.id.tv_name);
update();
}
```

Expand Down
6 changes: 5 additions & 1 deletion docs/base/2.StatefulWidget.md
Original file line number Diff line number Diff line change
Expand Up @@ -217,18 +217,22 @@ public class WidgetActivity extends AppCompatActivity {
```

然后重写 `StatefulUserWidget``initWidget``update`

有一点需要注意,`Stateful``Stateless` 都是先更新内部的 widget,在更新自己。
所以,这里需要在更新内部 widget 之前设置数据,所以一定要把 `super.update();` 放到后面执行。
```
@Override
public void initWidget(UserWidget widget) {
widget.setOnClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));
update();
}
@Override
public void update() {
super.update();
widget.setUser(user);
super.update();
}
```

Expand Down
1 change: 1 addition & 0 deletions docs/base/4.LinearWidget.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ StatefulWidget<LinearLayout, LinearWidget>
.onClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));
update();
}
```

Expand Down
1 change: 1 addition & 0 deletions docs/base/5.FrameWidget.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ StatefulWidget<FrameLayout, FrameWidget>
.onClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));
update();
}
```

Expand Down
1 change: 1 addition & 0 deletions docs/base/6.RelativeWidget.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ StatefulWidget<RelativeLayout, RelativeWidget>
.onClickListener(v -> setState(() -> {
user = UserDataSource.getInstance().getUser();
}));
update();
}
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ private void init() {
initView(view);
initEvent(view);
initData();
update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ public V render() {
if (view == null)
throw new IllegalStateException("can't render view");
initWidget(widget);
update();
if (lifecycle != null) {
lifecycle.addObserver(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ public void initWidget(FrameWidget widget) {

@Override
public void update() {
super.update();
updateWidget();
super.update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ public void initWidget(FrameWidget widget) {

@Override
public void update() {
super.update();
updateWidget();
super.update();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ protected State<T> createState(Context context) {

@Override
public void update() {
super.update();
updateWidget();
super.update();
}

private void updateWidget() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ public V render() {
if (view == null)
throw new IllegalStateException("can't render view");
initWidget(widget);
update();
if (lifecycle != null) {
lifecycle.addObserver(this);
}
Expand Down

0 comments on commit 1590a76

Please sign in to comment.