package com.popo.module_detail.app; import android.app.Application; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import com.jess.arms.base.delegate.AppLifecycles; import com.jess.arms.di.module.GlobalConfigModule; import com.jess.arms.integration.ConfigModule; import com.jess.arms.utils.ArmsUtils; import com.squareup.leakcanary.RefWatcher; import java.util.List; import com.popo.module_detail.BuildConfig; /** * ================================================ * App 的全局配置信息在此配置, 需要将此实现类声明到 AndroidManifest 中 * ConfigModule 的实现类可以有无数多个, 在 Application 中只是注册回调, 并不会影响性能 (多个 ConfigModule 在多 Module 环境下尤为受用) * * @see com.jess.arms.base.delegate.AppDelegate * @see com.jess.arms.integration.ManifestParser * Created by MVPArmsTemplate * <a href="mailto:[email protected]">Contact me</a> * <a href="https://github.com/JessYanCoding">Follow me</a> * ================================================ */ public final class GlobalConfiguration implements ConfigModule { GlobalConfigModule.Builder builder; @Override public void applyOptions(Context context, GlobalConfigModule.Builder builder) { } @Override public void injectAppLifecycle(Context context, List<AppLifecycles> lifecycles) { // AppLifecycles 的所有方法都会在基类 Application 的对应的生命周期中被调用,所以在对应的方法中可以扩展一些自己需要的逻辑 // 可以根据不同的逻辑添加多个实现类 lifecycles.add(new AppLifecyclesImpl(){ @Override public void onCreate(Application application) { } }); } @Override public void injectActivityLifecycle(Context context, List<Application.ActivityLifecycleCallbacks> lifecycles) { } @Override public void injectFragmentLifecycle(Context context, List<FragmentManager.FragmentLifecycleCallbacks> lifecycles) { //当所有模块集成到宿主 App 时, 在 App 中已经执行了以下代码, 所以不需要再执行 if (BuildConfig.IS_BUILD_MODULE) { lifecycles.add(new FragmentManager.FragmentLifecycleCallbacks() { @Override public void onFragmentDestroyed(FragmentManager fm, android.support.v4.app.Fragment f) { ((RefWatcher) ArmsUtils .obtainAppComponentFromContext(f.getActivity()) .extras() .get(RefWatcher.class.getName())) .watch(f); } }); } } }