-
Notifications
You must be signed in to change notification settings - Fork 150
BeamBasePresenter
Jude edited this page Apr 9, 2016
·
2 revisions
Presenter与View一一对应。负责处理View的逻辑与数据。
然而Activity本身就负责了很多逻辑事件处理。比如生命周期,页面跳转返回。这里我将生命周期在Presenter里重现了。以解决这个问题。
public class UserDetailPresenter extends BeamBasePresenter<UserDetailActivity> {
//activity 第一次create直到到主动退出Activity之前都不会调用。
protected void onCreate(UserDetailActivity view,Bundle savedState) {
}
//presenter销毁时的回调。代表着activity正式退出
protected void onDestroy() {
}
//上面与下面2个回调的区别详见BeamAppCompatActvity的Activity意外销毁部分。
//activity$OnCreate的回调,但执行延迟到OnCreate之后。
protected void onCreateView(UserDetailActivity view) {
}
//activity$OnDestory的回调
protected void onDestroyView() {
}
protected void onResume() {
}
protected void onPause() {
}
protected void onSave(Bundle state) {
}
protected void onResult(int requestCode, int resultCode, Intent data) {
}
}
在任意地方都可以调用getView()
来获取对应的Activity。
###一种很常见的场景
将一个Id或者一个Parcelable数据传给1个Activity。
public void startActivity(Intent intent)
public void startActivity(Class<? extends Activity> clazz)
public void startActivityWithData(String id,Class<? extends Activity> clazz)
public void startActivityWithData(String id, Parcelable data,Class<? extends Activity> clazz)
public void startActivityWithData(Parcelable data,Class<? extends Activity> clazz)
在BeamBasePresenter
可以很方便的使用这些方法来进行页面跳转
public String getIdFromIntent()
<M> M getDataFromIntent()
然后就可以很方便的使用这2个方法来获取数据。
在DataPresenter中,会自动发布这里的Parcelable data
本质就是使用这2个key:
public static final String KEY_ID = "Beam_id";
public static final String KEY_DATA = "Beam_data";