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

improve AppManager

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