diff --git a/arms/src/main/java/com/jess/arms/base/BaseActivity.java b/arms/src/main/java/com/jess/arms/base/BaseActivity.java index 9e0eef1ad9d0be9f7d6dfeac9abf6d0fa80d41ac..ccf7588b2b13f3290f396ce73dbe035dd4ccccf3 100644 --- a/arms/src/main/java/com/jess/arms/base/BaseActivity.java +++ b/arms/src/main/java/com/jess/arms/base/BaseActivity.java @@ -37,6 +37,7 @@ public abstract class BaseActivity
extends RxAppCompatA private static final String LAYOUT_LINEARLAYOUT = "LinearLayout"; private static final String LAYOUT_FRAMELAYOUT = "FrameLayout"; private static final String LAYOUT_RELATIVELAYOUT = "RelativeLayout"; + public static final String IS_NOT_ADD_ACTIVITY_LIST = "is_add_activity_list";//是否加入到activity的list,管理 private Unbinder mUnbinder; @@ -78,11 +79,15 @@ public abstract class BaseActivity
extends RxAppCompatA protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mApplication = (BaseApplication) getApplication(); + //如果intent包含了此字段,并且为true说明不加入到list + // 默认为false,如果不需要管理(比如不需要在退出所有activity(killAll)时,退出此activity就在intent加此字段为true) + boolean isNotAdd = getIntent().getBooleanExtra(IS_NOT_ADD_ACTIVITY_LIST, false); synchronized (BaseActivity.class) { - - mApplication.getActivityList().add(this); + if (!isNotAdd) + mApplication.getActivityList().add(this); } - EventBus.getDefault().register(this);//注册到事件主线 + if (useEventBus())//如果要使用eventbus请将此方法返回true + EventBus.getDefault().register(this);//注册到事件主线 setContentView(initView()); //绑定到butterknife mUnbinder = ButterKnife.bind(this); @@ -117,9 +122,20 @@ public abstract class BaseActivity
extends RxAppCompatA } if (mPresenter != null) mPresenter.onDestroy();//释放资源 if (mUnbinder != Unbinder.EMPTY) mUnbinder.unbind(); - EventBus.getDefault().unregister(this); + if (useEventBus())//如果要使用eventbus请将此方法返回true + EventBus.getDefault().unregister(this); + } + + /** + * 是否使用eventBus,默认为使用(true), + * + * @return + */ + protected boolean useEventBus() { + return false; } + @Override public void onBackPressed() { super.onBackPressed(); diff --git a/arms/src/main/java/com/jess/arms/base/BaseFragment.java b/arms/src/main/java/com/jess/arms/base/BaseFragment.java index 7384ca31fb9fa1f26e68add4d83f8963ae6ec500..2003791dfcde170c1b154c75ca2c8a05a6c57a87 100644 --- a/arms/src/main/java/com/jess/arms/base/BaseFragment.java +++ b/arms/src/main/java/com/jess/arms/base/BaseFragment.java @@ -40,7 +40,8 @@ public abstract class BaseFragment
extends RxFragment { public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mActivity = (BaseActivity) getActivity(); - EventBus.getDefault().register(this);//注册到事件主线 + if (useEventBus())//如果要使用eventbus请将此方法返回true + EventBus.getDefault().register(this);//注册到事件主线 ComponentInject(); initData(); } @@ -61,7 +62,17 @@ public abstract class BaseFragment
extends RxFragment { public void onDestroy() { super.onDestroy(); if (mPresenter != null) mPresenter.onDestroy();//释放资源 - EventBus.getDefault().unregister(this); + if (useEventBus())//如果要使用eventbus请将此方法返回true + EventBus.getDefault().unregister(this); + } + + /** + * 是否使用eventBus,默认为使用(true), + * + * @return + */ + protected boolean useEventBus() { + return false; } @@ -70,10 +81,29 @@ public abstract class BaseFragment
extends RxFragment {
protected abstract void initData();
+ /**
+ * 此方法是让外部调用使fragment做一些操作的,比如说外部的activity想让fragment对象执行一些方法,
+ * 建议在有多个需要让外界调用的方法时,统一传bundle,里面存一个what字段,来区分不同的方法,在setData
+ * 方法中就可以switch做不同的操作,这样就可以用统一的入口方法做不同的事,和message同理
+ *
+ * 使用此方法时请注意调用时fragment的生命周期,如果调用此setData方法时onActivityCreated
+ * 还没执行,setData里调用presenter的方法时,是会报空的,因为dagger注入是在onActivityCreated
+ * 方法中执行的,如果要做一些初始化操作,可以不必让外部调setData,在内部onActivityCreated中
+ * 初始化就可以了
+ *
+ * @param data
+ */
public void setData(Object data) {
}
+ /**
+ * 使用此方法时请注意调用时fragment的生命周期,如果调用此setData方法时onActivityCreated
+ * 还没执行,setData里调用presenter的方法时,是会报空的,因为dagger注入是在onActivityCreated
+ * 方法中执行的,如果要做一些初始化操作,可以不必让外部调setData,在内部onActivityCreated中
+ * 初始化就可以了
+ *
+ */
public void setData() {
}
diff --git a/arms/src/main/java/com/jess/arms/base/BaseHolder.java b/arms/src/main/java/com/jess/arms/base/BaseHolder.java
index 6224350e775026e473fdda612dea5014693a745a..f0cf656180261f5d92ad439720b398ab4cc8a23a 100644
--- a/arms/src/main/java/com/jess/arms/base/BaseHolder.java
+++ b/arms/src/main/java/com/jess/arms/base/BaseHolder.java
@@ -6,8 +6,6 @@ import android.view.View;
import com.jess.arms.utils.KnifeUtil;
import com.zhy.autolayout.utils.AutoUtils;
-import org.simple.eventbus.EventBus;
-
/**
* Created by jess on 2015/11/24.
*/
@@ -19,7 +17,6 @@ public abstract class BaseHolder