diff --git a/arms/src/main/java/com/jess/arms/integration/FragmentLifecycle.java b/arms/src/main/java/com/jess/arms/integration/FragmentLifecycle.java index 20aef0066f4ee4c4f85f0bba14b9324a43a076dd..34bb86ae8a44e66345a048df2ecc52e794161e5e 100644 --- a/arms/src/main/java/com/jess/arms/integration/FragmentLifecycle.java +++ b/arms/src/main/java/com/jess/arms/integration/FragmentLifecycle.java @@ -21,19 +21,15 @@ import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.view.View; - import com.jess.arms.base.delegate.FragmentDelegate; import com.jess.arms.base.delegate.FragmentDelegateImpl; import com.jess.arms.base.delegate.IFragment; import com.jess.arms.integration.cache.Cache; import com.jess.arms.integration.cache.IntelligentCache; import com.jess.arms.utils.Preconditions; - import javax.inject.Inject; import javax.inject.Singleton; -import timber.log.Timber; - /** * ================================================ * {@link FragmentManager.FragmentLifecycleCallbacks} 默认实现类 @@ -53,7 +49,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentAttached(FragmentManager fm, Fragment f, Context context) { - Timber.w(f.toString() + " - onFragmentAttached"); if (f instanceof IFragment) { FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate == null || !fragmentDelegate.isAdded()) { @@ -69,7 +64,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) { - Timber.w(f.toString() + " - onFragmentCreated"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onCreate(savedInstanceState); @@ -78,7 +72,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentViewCreated(FragmentManager fm, Fragment f, View v, Bundle savedInstanceState) { - Timber.w(f.toString() + " - onFragmentViewCreated"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onCreateView(v, savedInstanceState); @@ -87,7 +80,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentActivityCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) { - Timber.w(f.toString() + " - onFragmentActivityCreated"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onActivityCreate(savedInstanceState); @@ -96,7 +88,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentStarted(FragmentManager fm, Fragment f) { - Timber.w(f.toString() + " - onFragmentStarted"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onStart(); @@ -105,7 +96,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentResumed(FragmentManager fm, Fragment f) { - Timber.w(f.toString() + " - onFragmentResumed"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onResume(); @@ -114,7 +104,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentPaused(FragmentManager fm, Fragment f) { - Timber.w(f.toString() + " - onFragmentPaused"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onPause(); @@ -123,7 +112,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentStopped(FragmentManager fm, Fragment f) { - Timber.w(f.toString() + " - onFragmentStopped"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onStop(); @@ -132,7 +120,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentSaveInstanceState(FragmentManager fm, Fragment f, Bundle outState) { - Timber.w(f.toString() + " - onFragmentSaveInstanceState"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onSaveInstanceState(outState); @@ -141,7 +128,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentViewDestroyed(FragmentManager fm, Fragment f) { - Timber.w(f.toString() + " - onFragmentViewDestroyed"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onDestroyView(); @@ -150,7 +136,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentDestroyed(FragmentManager fm, Fragment f) { - Timber.w(f.toString() + " - onFragmentDestroyed"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onDestroy(); @@ -159,7 +144,6 @@ public class FragmentLifecycle extends FragmentManager.FragmentLifecycleCallback @Override public void onFragmentDetached(FragmentManager fm, Fragment f) { - Timber.w(f.toString() + " - onFragmentDetached"); FragmentDelegate fragmentDelegate = fetchFragmentDelegate(f); if (fragmentDelegate != null) { fragmentDelegate.onDetach(); diff --git a/demo/src/main/java/me/jessyan/mvparms/demo/app/ActivityLifecycleCallbacksImpl.java b/demo/src/main/java/me/jessyan/mvparms/demo/app/ActivityLifecycleCallbacksImpl.java index 9fcabf950600e5b12c6c6215c36b45bcfc34f0f2..b68464e6870fe3201f8644695faa31c3af2c1b9c 100644 --- a/demo/src/main/java/me/jessyan/mvparms/demo/app/ActivityLifecycleCallbacksImpl.java +++ b/demo/src/main/java/me/jessyan/mvparms/demo/app/ActivityLifecycleCallbacksImpl.java @@ -39,12 +39,12 @@ public class ActivityLifecycleCallbacksImpl implements Application.ActivityLifec @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { - Timber.w(activity + " - onActivityCreated"); + Timber.i(activity + " - onActivityCreated"); } @Override public void onActivityStarted(Activity activity) { - Timber.w(activity + " - onActivityStarted"); + Timber.i(activity + " - onActivityStarted"); if (!activity.getIntent().getBooleanExtra("isInitToolbar", false)) { //由于加强框架的兼容性,故将 setContentView 放到 onActivityCreated 之后,onActivityStarted 之前执行 //而 findViewById 必须在 Activity setContentView() 后才有效,所以将以下代码从之前的 onActivityCreated 中移动到 onActivityStarted 中执行 @@ -74,27 +74,27 @@ public class ActivityLifecycleCallbacksImpl implements Application.ActivityLifec @Override public void onActivityResumed(Activity activity) { - Timber.w(activity + " - onActivityResumed"); + Timber.i(activity + " - onActivityResumed"); } @Override public void onActivityPaused(Activity activity) { - Timber.w(activity + " - onActivityPaused"); + Timber.i(activity + " - onActivityPaused"); } @Override public void onActivityStopped(Activity activity) { - Timber.w(activity + " - onActivityStopped"); + Timber.i(activity + " - onActivityStopped"); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { - Timber.w(activity + " - onActivitySaveInstanceState"); + Timber.i(activity + " - onActivitySaveInstanceState"); } @Override public void onActivityDestroyed(Activity activity) { - Timber.w(activity + " - onActivityDestroyed"); + Timber.i(activity + " - onActivityDestroyed"); //横竖屏切换或配置改变时, Activity 会被重新创建实例, 但 Bundle 中的基础数据会被保存下来,移除该数据是为了保证重新创建的实例可以正常工作 activity.getIntent().removeExtra("isInitToolbar"); } diff --git a/demo/src/main/java/me/jessyan/mvparms/demo/app/FragmentLifecycleCallbacksImpl.java b/demo/src/main/java/me/jessyan/mvparms/demo/app/FragmentLifecycleCallbacksImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..baaae34b711c1eca7ca2ee20a361bcc95e54e6e3 --- /dev/null +++ b/demo/src/main/java/me/jessyan/mvparms/demo/app/FragmentLifecycleCallbacksImpl.java @@ -0,0 +1,93 @@ +package me.jessyan.mvparms.demo.app; + +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.view.View; +import com.jess.arms.integration.cache.IntelligentCache; +import com.jess.arms.utils.ArmsUtils; +import com.squareup.leakcanary.RefWatcher; +import timber.log.Timber; + +/** + * ================================================ + * 展示 {@link FragmentManager.FragmentLifecycleCallbacks} 的用法 + *

+ * Created by JessYan on 23/08/2018 17:14 + * Contact me + * Follow me + * ================================================ + */ +public class FragmentLifecycleCallbacksImpl extends FragmentManager.FragmentLifecycleCallbacks{ + + @Override + public void onFragmentAttached(FragmentManager fm, Fragment f, Context context) { + Timber.i(f.toString() + " - onFragmentAttached"); + } + + @Override + public void onFragmentCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) { + Timber.i(f.toString() + " - onFragmentCreated"); + // 在配置变化的时候将这个 Fragment 保存下来,在 Activity 由于配置变化重建时重复利用已经创建的 Fragment。 + // https://developer.android.com/reference/android/app/Fragment.html?hl=zh-cn#setRetainInstance(boolean) + // 如果在 XML 中使用 标签,的方式创建 Fragment 请务必在标签中加上 android:id 或者 android:tag 属性,否则 setRetainInstance(true) 无效 + // 在 Activity 中绑定少量的 Fragment 建议这样做,如果需要绑定较多的 Fragment 不建议设置此参数,如 ViewPager 需要展示较多 Fragment + f.setRetainInstance(true); + } + + @Override + public void onFragmentViewCreated(FragmentManager fm, Fragment f, View v, Bundle savedInstanceState) { + Timber.i(f.toString() + " - onFragmentViewCreated"); + } + + @Override + public void onFragmentActivityCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) { + Timber.i(f.toString() + " - onFragmentActivityCreated"); + } + + @Override + public void onFragmentStarted(FragmentManager fm, Fragment f) { + Timber.i(f.toString() + " - onFragmentStarted"); + } + + @Override + public void onFragmentResumed(FragmentManager fm, Fragment f) { + Timber.i(f.toString() + " - onFragmentResumed"); + } + + @Override + public void onFragmentPaused(FragmentManager fm, Fragment f) { + Timber.i(f.toString() + " - onFragmentPaused"); + } + + @Override + public void onFragmentStopped(FragmentManager fm, Fragment f) { + Timber.i(f.toString() + " - onFragmentStopped"); + } + + @Override + public void onFragmentSaveInstanceState(FragmentManager fm, Fragment f, Bundle outState) { + Timber.i(f.toString() + " - onFragmentSaveInstanceState"); + } + + @Override + public void onFragmentViewDestroyed(FragmentManager fm, Fragment f) { + Timber.i(f.toString() + " - onFragmentViewDestroyed"); + } + + @Override + public void onFragmentDestroyed(FragmentManager fm, Fragment f) { + Timber.i(f.toString() + " - onFragmentDestroyed"); + ((RefWatcher) ArmsUtils + .obtainAppComponentFromContext(f.getActivity()) + .extras() + .get(IntelligentCache.getKeyOfKeep(RefWatcher.class.getName()))) + .watch(f); + } + + @Override + public void onFragmentDetached(FragmentManager fm, Fragment f) { + Timber.i(f.toString() + " - onFragmentDetached"); + } +} diff --git a/demo/src/main/java/me/jessyan/mvparms/demo/app/GlobalConfiguration.java b/demo/src/main/java/me/jessyan/mvparms/demo/app/GlobalConfiguration.java index f1ba88b20d58a2f37770fe48e1e310949075aa58..bc9e30c64f64f26d9f14e27f29900ae5a92bc35d 100644 --- a/demo/src/main/java/me/jessyan/mvparms/demo/app/GlobalConfiguration.java +++ b/demo/src/main/java/me/jessyan/mvparms/demo/app/GlobalConfiguration.java @@ -17,22 +17,14 @@ package me.jessyan.mvparms.demo.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.http.imageloader.glide.GlideImageLoaderStrategy; import com.jess.arms.http.log.RequestInterceptor; import com.jess.arms.integration.ConfigModule; -import com.jess.arms.integration.cache.IntelligentCache; -import com.jess.arms.utils.ArmsUtils; -import com.squareup.leakcanary.RefWatcher; - import java.util.List; import java.util.concurrent.TimeUnit; - import me.jessyan.mvparms.demo.BuildConfig; import me.jessyan.mvparms.demo.mvp.model.api.Api; import me.jessyan.progressmanager.ProgressManager; @@ -168,26 +160,7 @@ public final class GlobalConfiguration implements ConfigModule { @Override public void injectFragmentLifecycle(Context context, List lifecycles) { - lifecycles.add(new FragmentManager.FragmentLifecycleCallbacks() { - - @Override - public void onFragmentCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) { - // 在配置变化的时候将这个 Fragment 保存下来,在 Activity 由于配置变化重建时重复利用已经创建的 Fragment。 - // https://developer.android.com/reference/android/app/Fragment.html?hl=zh-cn#setRetainInstance(boolean) - // 如果在 XML 中使用 标签,的方式创建 Fragment 请务必在标签中加上 android:id 或者 android:tag 属性,否则 setRetainInstance(true) 无效 - // 在 Activity 中绑定少量的 Fragment 建议这样做,如果需要绑定较多的 Fragment 不建议设置此参数,如 ViewPager 需要展示较多 Fragment - f.setRetainInstance(true); - } - - @Override - public void onFragmentDestroyed(FragmentManager fm, Fragment f) { - ((RefWatcher) ArmsUtils - .obtainAppComponentFromContext(f.getActivity()) - .extras() - .get(IntelligentCache.getKeyOfKeep(RefWatcher.class.getName()))) - .watch(f); - } - }); + lifecycles.add(new FragmentLifecycleCallbacksImpl()); } }