一、本类API
- 类
- 泛型传入Presenter(继承自IPresenter)
- 继承RxAppCompatActivity进行生命周期管理
- 实现IActivity
- 方法
- onCreate butternife的绑定
- onDestroy()释放资源
- useEventBus()默认true
- useFragment() 默认true
在创建BaseActivity前,我们先创建一个Presenter的接口和Activity的接口
二、创建interface IPresenter,IActivity
public interface IPresenter {
void onStart();
void onDestroy();
}
//下面是IActivity的接口
package com.daqsoft.ybarms.base.delegate;
import android.os.Bundle;
/**
* Created by yanbo on 2017/7/26.
* Activity的接口包括
* 1、useEventBus()
* 2、initView(Bundle savedInstanceState)
* 返回0则不会调用setContentView
* 3、initData(Bundle savedInstanceState)
* 4、useFragment()
* 这个Activity是否会使用Fragment,框架会根据这个属性判断是否注册FragmentManager.FragmentLifecycleCallbacks
* 如果返回false那意味着这个Activity不需要绑定Fragment,那你再在这个Activity中绑定继承于BaseFragment的Fragment将不起任何作用
*
*/
public interface IActivity {
boolean useFragment();
boolean useEventBus();
int initView(Bundle savedInstanceState);
void initData(Bundle savedInstanceState);
}
三、 BaseActivity代码
package com.daqsoft.ybarms.base;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import com.daqsoft.ybarms.base.delegate.IActivity;
import com.daqsoft.ybarms.mvp.IPresenter;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import javax.inject.Inject;
import butterknife.ButterKnife;
import butterknife.Unbinder;
/**
* Created by yanbo on 2017/7/26.
* 泛型传入Presenter(继承自IPresenter)
* 继承RxAppCompatActivity进行生命周期管理
* 实现IActivity
*/
public abstract class BaseActivity<P extends IPresenter> extends RxAppCompatActivity implements IActivity {
private Unbinder mUnbinder;
@Inject
protected P mPresenter;
/**
* -------------------------------------------------butternife的绑定
*/
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
int layoutResID = initView(savedInstanceState);
if (layoutResID != 0) {//如果initView返回0,框架则不会调用setContentView(),当然也不会 Bind ButterKnife
setContentView(layoutResID);
//绑定到butterknife
mUnbinder = ButterKnife.bind(this);
}
} catch (Exception e) {
e.printStackTrace();
}
initData(savedInstanceState);
}
/**
* -------------------------------------------------的释放资源
* butternife
* mPresenter
*/
@Override
protected void onDestroy() {
super.onDestroy();
if (mUnbinder != null && mUnbinder != Unbinder.EMPTY)
mUnbinder.unbind();
this.mUnbinder = null;
if (mPresenter != null)
mPresenter.onDestroy();//释放资源
this.mPresenter = null;
}
/**
* 是否使用eventBus,默认为使用(true),
*
* @return
*/
@Override
public boolean useEventBus() {
return true;
}
/**
* 这个Activity是否会使用Fragment,框架会根据这个属性判断是否注册{android.support.v4.app.FragmentManager.FragmentLifecycleCallbacks}
* 如果返回false,那意味着这个Activity不需要绑定Fragment,那你再在这个Activity中绑定继承于 {BaseFragment} 的Fragment将不起任何作用
*
* @return
*/
@Override
public boolean useFragment() {
return true;
}
}