Skip to content
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";
Clone this wiki locally