// Path: architecture/src/main/java/com/jiang/android/architecture/AppManager.java
// public class AppManager {
//     private static Stack<Activity> activityStack;
//     private static AppManager instance;
// 
// 
//     private AppManager() {
//     }
// 
//     /**
//      * 单一实例
//      */
//     public static AppManager getAppManager() {
//         if (instance == null) {
//             instance = new AppManager();
//         }
//         return instance;
//     }
// 
//     /**
//      * 添加Activity到堆栈
//      */
//     public void addActivity(Activity activity) {
//         if (activityStack == null) {
//             activityStack = new Stack<>();
//         }
//         activityStack.add(activity);
//     }
// 
// 
//     /**
//      * 包括包名的类
//      *
//      * @param className
//      * @return
//      */
//     public boolean existClass(String className) {
//         if (activityStack == null || activityStack.size() == 0 || TextUtils.isEmpty(className))
//             return false;
// 
//         for (int i = 0; i < activityStack.size(); i++) {
//             String name = activityStack.get(i).getClass().getName();
//             if (className.equals(name))
//                 return true;
//         }
//         return false;
//     }
// 
//     /**
//      * 获取当前Activity（堆栈中最后一个压入的）
//      */
//     public Activity currentActivity() {
//         Activity activity = activityStack.lastElement();
//         return activity;
//     }
// 
//     public int size() {
//         return (activityStack == null || activityStack.size() == 0) ? 0 : activityStack.size();
//     }
// 
//     /**
//      * 结束当前Activity（堆栈中最后一个压入的）
//      */
//     public void finishActivity() {
//         Activity activity = activityStack.lastElement();
//         finishActivity(activity);
//     }
// 
//     /**
//      * 结束指定的Activity
//      */
//     public void finishActivity(Activity activity) {
//         if (activity != null) {
//             activityStack.remove(activity);
//             activity.finish();
//         }
//     }
// 
//     public void removeActivity(Activity activity) {
//         if (activity != null) {
//             activityStack.remove(activity);
//         }
//     }
// 
//     /**
//      * 结束指定类名的Activity
//      */
//     public void finishActivity(Class<?> cls) {
//         for (Activity activity : activityStack) {
//             if (activity.getClass().equals(cls)) {
//                 finishActivity(activity);
//             }
//         }
//     }
// 
//     /**
//      * 结束所有Activity
//      */
//     public void finishAllActivity() {
//         if (activityStack == null || activityStack.size() == 0)
//             return;
//         for (int i = 0, size = activityStack.size(); i < size; i++) {
//             if (null != activityStack.get(i)) {
//                 activityStack.get(i).finish();
//             }
//         }
//         activityStack.clear();
//     }
// 
//     /**
//      * 退出应用程序
//      */
//     public void exit(Context context) {
//         try {
//             finishAllActivity();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// 
// 
// }


import android.os.Bundle;
import android.support.annotation.CallSuper;
import android.support.annotation.CheckResult;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import com.jiang.android.architecture.AppManager;
import com.trello.rxlifecycle.LifecycleProvider;
import com.trello.rxlifecycle.LifecycleTransformer;
import com.trello.rxlifecycle.RxLifecycle;
import com.trello.rxlifecycle.android.ActivityEvent;
import com.trello.rxlifecycle.android.RxLifecycleAndroid;
import rx.Observable;
import rx.subjects.BehaviorSubject;
package com.jiang.android.architecture.rxsupport;




public class RxAppCompatActivity extends AppCompatActivity implements LifecycleProvider<ActivityEvent> {

    private final BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create();

    @Override
    @NonNull
    @CheckResult
    public final Observable<ActivityEvent> lifecycle() {
        return lifecycleSubject.asObservable();
    }

    @Override
    @NonNull
    @CheckResult
    public final <T> LifecycleTransformer<T> bindUntilEvent(@NonNull ActivityEvent event) {
        return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
    }

    @Override
    @NonNull
    @CheckResult
    public final <T> LifecycleTransformer<T> bindToLifecycle() {
        return RxLifecycleAndroid.bindActivity(lifecycleSubject);
    }

    @Override
    @CallSuper
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
// Path: architecture/src/main/java/com/jiang/android/architecture/AppManager.java
// public class AppManager {
//     private static Stack<Activity> activityStack;
//     private static AppManager instance;
// 
// 
//     private AppManager() {
//     }
// 
//     /**
//      * 单一实例
//      */
//     public static AppManager getAppManager() {
//         if (instance == null) {
//             instance = new AppManager();
//         }
//         return instance;
//     }
// 
//     /**
//      * 添加Activity到堆栈
//      */
//     public void addActivity(Activity activity) {
//         if (activityStack == null) {
//             activityStack = new Stack<>();
//         }
//         activityStack.add(activity);
//     }
// 
// 
//     /**
//      * 包括包名的类
//      *
//      * @param className
//      * @return
//      */
//     public boolean existClass(String className) {
//         if (activityStack == null || activityStack.size() == 0 || TextUtils.isEmpty(className))
//             return false;
// 
//         for (int i = 0; i < activityStack.size(); i++) {
//             String name = activityStack.get(i).getClass().getName();
//             if (className.equals(name))
//                 return true;
//         }
//         return false;
//     }
// 
//     /**
//      * 获取当前Activity（堆栈中最后一个压入的）
//      */
//     public Activity currentActivity() {
//         Activity activity = activityStack.lastElement();
//         return activity;
//     }
// 
//     public int size() {
//         return (activityStack == null || activityStack.size() == 0) ? 0 : activityStack.size();
//     }
// 
//     /**
//      * 结束当前Activity（堆栈中最后一个压入的）
//      */
//     public void finishActivity() {
//         Activity activity = activityStack.lastElement();
//         finishActivity(activity);
//     }
// 
//     /**
//      * 结束指定的Activity
//      */
//     public void finishActivity(Activity activity) {
//         if (activity != null) {
//             activityStack.remove(activity);
//             activity.finish();
//         }
//     }
// 
//     public void removeActivity(Activity activity) {
//         if (activity != null) {
//             activityStack.remove(activity);
//         }
//     }
// 
//     /**
//      * 结束指定类名的Activity
//      */
//     public void finishActivity(Class<?> cls) {
//         for (Activity activity : activityStack) {
//             if (activity.getClass().equals(cls)) {
//                 finishActivity(activity);
//             }
//         }
//     }
// 
//     /**
//      * 结束所有Activity
//      */
//     public void finishAllActivity() {
//         if (activityStack == null || activityStack.size() == 0)
//             return;
//         for (int i = 0, size = activityStack.size(); i < size; i++) {
//             if (null != activityStack.get(i)) {
//                 activityStack.get(i).finish();
//             }
//         }
//         activityStack.clear();
//     }
// 
//     /**
//      * 退出应用程序
//      */
//     public void exit(Context context) {
//         try {
//             finishAllActivity();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// 
// 
// }


// Path: architecture/src/main/java/com/jiang/android/architecture/rxsupport/RxAppCompatActivity.java
import android.os.Bundle;
import android.support.annotation.CallSuper;
import android.support.annotation.CheckResult;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import com.jiang.android.architecture.AppManager;
import com.trello.rxlifecycle.LifecycleProvider;
import com.trello.rxlifecycle.LifecycleTransformer;
import com.trello.rxlifecycle.RxLifecycle;
import com.trello.rxlifecycle.android.ActivityEvent;
import com.trello.rxlifecycle.android.RxLifecycleAndroid;
import rx.Observable;
import rx.subjects.BehaviorSubject;

package com.jiang.android.architecture.rxsupport;




public class RxAppCompatActivity extends AppCompatActivity implements LifecycleProvider<ActivityEvent> {

    private final BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create();

    @Override
    @NonNull
    @CheckResult
    public final Observable<ActivityEvent> lifecycle() {
        return lifecycleSubject.asObservable();
    }

    @Override
    @NonNull
    @CheckResult
    public final <T> LifecycleTransformer<T> bindUntilEvent(@NonNull ActivityEvent event) {
        return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
    }

    @Override
    @NonNull
    @CheckResult
    public final <T> LifecycleTransformer<T> bindToLifecycle() {
        return RxLifecycleAndroid.bindActivity(lifecycleSubject);
    }

    @Override
    @CallSuper
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AppManager.getAppManager().addActivity(this);