提交 741fab02 编写于 作者: J jessyan

improve AppManager

上级 97bf1a2f
...@@ -3,7 +3,6 @@ package me.jessyan.mvparms.demo.mvp.ui.activity; ...@@ -3,7 +3,6 @@ package me.jessyan.mvparms.demo.mvp.ui.activity;
import android.content.Intent; import android.content.Intent;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -15,13 +14,13 @@ import com.paginate.Paginate; ...@@ -15,13 +14,13 @@ import com.paginate.Paginate;
import com.tbruyelle.rxpermissions.RxPermissions; import com.tbruyelle.rxpermissions.RxPermissions;
import butterknife.BindView; import butterknife.BindView;
import me.jessyan.mvparms.demo.R;
import common.AppComponent; import common.AppComponent;
import common.WEActivity;
import me.jessyan.mvparms.demo.R;
import me.jessyan.mvparms.demo.di.component.DaggerUserComponent; import me.jessyan.mvparms.demo.di.component.DaggerUserComponent;
import me.jessyan.mvparms.demo.di.module.UserModule; import me.jessyan.mvparms.demo.di.module.UserModule;
import me.jessyan.mvparms.demo.mvp.contract.UserContract; import me.jessyan.mvparms.demo.mvp.contract.UserContract;
import me.jessyan.mvparms.demo.mvp.presenter.UserPresenter; import me.jessyan.mvparms.demo.mvp.presenter.UserPresenter;
import common.WEActivity;
import rx.Observable; import rx.Observable;
import rx.android.schedulers.AndroidSchedulers; import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1; import rx.functions.Action1;
...@@ -74,23 +73,7 @@ public class UserActivity extends WEActivity<UserPresenter> implements UserContr ...@@ -74,23 +73,7 @@ public class UserActivity extends WEActivity<UserPresenter> implements UserContr
*/ */
private void initRecycleView() { private void initRecycleView() {
mSwipeRefreshLayout.setOnRefreshListener(this); mSwipeRefreshLayout.setOnRefreshListener(this);
configRecycleView(mRecyclerView, new GridLayoutManager(this, 2)); UiUtils.configRecycleView(mRecyclerView, new GridLayoutManager(this, 2));
}
/**
* 配置recycleview
*
* @param recyclerView
* @param layoutManager
*/
private void configRecycleView(RecyclerView recyclerView
, RecyclerView.LayoutManager layoutManager
) {
recyclerView.setLayoutManager(layoutManager);
//如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
recyclerView.setHasFixedSize(true);
recyclerView.setItemAnimator(new DefaultItemAnimator());
} }
......
...@@ -32,7 +32,7 @@ public class ActivityLifecycle implements Application.ActivityLifecycleCallbacks ...@@ -32,7 +32,7 @@ public class ActivityLifecycle implements Application.ActivityLifecycleCallbacks
isNotAdd = activity.getIntent().getBooleanExtra(IS_NOT_ADD_ACTIVITY_LIST, false); isNotAdd = activity.getIntent().getBooleanExtra(IS_NOT_ADD_ACTIVITY_LIST, false);
if (!isNotAdd) if (!isNotAdd)
mAppManager.addActivity((BaseActivity) activity); mAppManager.addActivity(activity);
} }
@Override @Override
...@@ -42,7 +42,7 @@ public class ActivityLifecycle implements Application.ActivityLifecycleCallbacks ...@@ -42,7 +42,7 @@ public class ActivityLifecycle implements Application.ActivityLifecycleCallbacks
@Override @Override
public void onActivityResumed(Activity activity) { public void onActivityResumed(Activity activity) {
mAppManager.setCurrentActivity((BaseActivity) activity); mAppManager.setCurrentActivity(activity);
} }
@Override @Override
...@@ -64,6 +64,6 @@ public class ActivityLifecycle implements Application.ActivityLifecycleCallbacks ...@@ -64,6 +64,6 @@ public class ActivityLifecycle implements Application.ActivityLifecycleCallbacks
@Override @Override
public void onActivityDestroyed(Activity activity) { public void onActivityDestroyed(Activity activity) {
mAppManager.removeActivity((BaseActivity) activity); mAppManager.removeActivity(activity);
} }
} }
package com.jess.arms.base; package com.jess.arms.base;
import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
...@@ -39,9 +40,9 @@ public class AppManager { ...@@ -39,9 +40,9 @@ public class AppManager {
private Application mApplication; private Application mApplication;
//管理所有activity //管理所有activity
public List<BaseActivity> mActivityList; public List<Activity> mActivityList;
//当前在前台的activity //当前在前台的activity
private BaseActivity mCurrentActivity; private Activity mCurrentActivity;
@Inject @Inject
public AppManager(Application application) { public AppManager(Application application) {
...@@ -141,7 +142,7 @@ public class AppManager { ...@@ -141,7 +142,7 @@ public class AppManager {
* *
* @param currentActivity * @param currentActivity
*/ */
public void setCurrentActivity(BaseActivity currentActivity) { public void setCurrentActivity(Activity currentActivity) {
this.mCurrentActivity = currentActivity; this.mCurrentActivity = currentActivity;
} }
...@@ -150,7 +151,7 @@ public class AppManager { ...@@ -150,7 +151,7 @@ public class AppManager {
* *
* @return * @return
*/ */
public BaseActivity getCurrentActivity() { public Activity getCurrentActivity() {
return mCurrentActivity; return mCurrentActivity;
} }
...@@ -159,7 +160,7 @@ public class AppManager { ...@@ -159,7 +160,7 @@ public class AppManager {
* *
* @return * @return
*/ */
public List<BaseActivity> getActivityList() { public List<Activity> getActivityList() {
if (mActivityList == null) { if (mActivityList == null) {
mActivityList = new LinkedList<>(); mActivityList = new LinkedList<>();
} }
...@@ -170,7 +171,7 @@ public class AppManager { ...@@ -170,7 +171,7 @@ public class AppManager {
/** /**
* 添加Activity到集合 * 添加Activity到集合
*/ */
public void addActivity(BaseActivity activity) { public void addActivity(Activity activity) {
if (mActivityList == null) { if (mActivityList == null) {
mActivityList = new LinkedList<>(); mActivityList = new LinkedList<>();
} }
...@@ -186,9 +187,9 @@ public class AppManager { ...@@ -186,9 +187,9 @@ public class AppManager {
* *
* @param activity * @param activity
*/ */
public void removeActivity(BaseActivity activity) { public void removeActivity(Activity activity) {
if (mActivityList == null) { if (mActivityList == null) {
Timber.tag(TAG).w("mActivityList == null when removeActivity(BaseActivity)"); Timber.tag(TAG).w("mActivityList == null when removeActivity(Activity)");
return; return;
} }
synchronized (AppManager.class) { synchronized (AppManager.class) {
...@@ -203,7 +204,7 @@ public class AppManager { ...@@ -203,7 +204,7 @@ public class AppManager {
* *
* @param location * @param location
*/ */
public BaseActivity removeActivity(int location) { public Activity removeActivity(int location) {
if (mActivityList == null) { if (mActivityList == null) {
Timber.tag(TAG).w("mActivityList == null when removeActivity(int)"); Timber.tag(TAG).w("mActivityList == null when removeActivity(int)");
return null; return null;
...@@ -226,7 +227,7 @@ public class AppManager { ...@@ -226,7 +227,7 @@ public class AppManager {
Timber.tag(TAG).w("mActivityList == null when killActivity"); Timber.tag(TAG).w("mActivityList == null when killActivity");
return; return;
} }
for (BaseActivity activity : mActivityList) { for (Activity activity : mActivityList) {
if (activity.getClass().equals(activityClass)) { if (activity.getClass().equals(activityClass)) {
activity.finish(); activity.finish();
} }
...@@ -240,7 +241,7 @@ public class AppManager { ...@@ -240,7 +241,7 @@ public class AppManager {
* @param activity * @param activity
* @return * @return
*/ */
public boolean activityInstanceIsLive(BaseActivity activity) { public boolean activityInstanceIsLive(Activity activity) {
if (mActivityList == null) { if (mActivityList == null) {
Timber.tag(TAG).w("mActivityList == null when activityInstanceIsLive"); Timber.tag(TAG).w("mActivityList == null when activityInstanceIsLive");
return false; return false;
...@@ -260,7 +261,7 @@ public class AppManager { ...@@ -260,7 +261,7 @@ public class AppManager {
Timber.tag(TAG).w("mActivityList == null when activityClassIsLive"); Timber.tag(TAG).w("mActivityList == null when activityClassIsLive");
return false; return false;
} }
for (BaseActivity activity : mActivityList) { for (Activity activity : mActivityList) {
if (activity.getClass().equals(activityClass)) { if (activity.getClass().equals(activityClass)) {
return true; return true;
} }
...@@ -278,7 +279,7 @@ public class AppManager { ...@@ -278,7 +279,7 @@ public class AppManager {
// getActivityList().remove(0).finish(); // getActivityList().remove(0).finish();
// } // }
Iterator<BaseActivity> iterator = getActivityList().iterator(); Iterator<Activity> iterator = getActivityList().iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
iterator.next().finish(); iterator.next().finish();
iterator.remove(); iterator.remove();
......
...@@ -54,34 +54,11 @@ public abstract class BaseActivity<P extends Presenter> extends RxAppCompatActiv ...@@ -54,34 +54,11 @@ public abstract class BaseActivity<P extends Presenter> extends RxAppCompatActiv
} }
@Override
protected void onResume() {
super.onResume();
mApplication.getAppManager().setCurrentActivity(this);
}
@Override
protected void onPause() {
super.onPause();
if (mApplication.getAppManager().getCurrentActivity() == this) {
mApplication.getAppManager().setCurrentActivity(null);
}
}
@Nullable @Nullable
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mApplication = (BaseApplication) getApplication(); mApplication = (BaseApplication) getApplication();
//如果intent包含了此字段,并且为true说明不加入到list
// 默认为false,如果不需要管理(比如不需要在退出所有activity(killAll)时,退出此activity就在intent加此字段为true)
boolean isNotAdd = false;
if (getIntent() != null)
isNotAdd = getIntent().getBooleanExtra(IS_NOT_ADD_ACTIVITY_LIST, false);
if (!isNotAdd)
mApplication.getAppManager().addActivity(this);
if (useEventBus())//如果要使用eventbus请将此方法返回true if (useEventBus())//如果要使用eventbus请将此方法返回true
EventBus.getDefault().register(this);//注册到事件主线 EventBus.getDefault().register(this);//注册到事件主线
setContentView(initView()); setContentView(initView());
...@@ -113,7 +90,6 @@ public abstract class BaseActivity<P extends Presenter> extends RxAppCompatActiv ...@@ -113,7 +90,6 @@ public abstract class BaseActivity<P extends Presenter> extends RxAppCompatActiv
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
mApplication.getAppManager().removeActivity(this);
if (mPresenter != null) mPresenter.onDestroy();//释放资源 if (mPresenter != null) mPresenter.onDestroy();//释放资源
if (mUnbinder != Unbinder.EMPTY) mUnbinder.unbind(); if (mUnbinder != Unbinder.EMPTY) mUnbinder.unbind();
if (useEventBus())//如果要使用eventbus请将此方法返回true if (useEventBus())//如果要使用eventbus请将此方法返回true
......
...@@ -4,8 +4,8 @@ ext { ...@@ -4,8 +4,8 @@ ext {
buildToolsVersion : "25.0.2", buildToolsVersion : "25.0.2",
minSdkVersion : 15, minSdkVersion : 15,
targetSdkVersion : 25, targetSdkVersion : 25,
versionCode : 23, versionCode : 24,
versionName : "1.2.3", versionName : "1.2.4",
androidSupportSdkVersion: "25.1.1", androidSupportSdkVersion: "25.1.1",
retrofitSdkVersion : "2.1.0", retrofitSdkVersion : "2.1.0",
dagger2SdkVersion : "2.8", dagger2SdkVersion : "2.8",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册