Loading packages/SettingsLib/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,10 @@ LOCAL_SHARED_ANDROID_LIBRARIES := \ android-support-v7-appcompat \ android-support-v14-preference LOCAL_SHARED_JAVA_LIBRARIES := \ apptoolkit-lifecycle-common \ apptoolkit-lifecycle-runtime LOCAL_STATIC_JAVA_LIBRARY := legacy-android-test LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res Loading packages/SettingsLib/src/com/android/settingslib/core/lifecycle/Lifecycle.java +77 −10 Original line number Diff line number Diff line Loading @@ -15,11 +15,18 @@ */ package com.android.settingslib.core.lifecycle; import static android.arch.lifecycle.Lifecycle.Event.ON_ANY; import android.annotation.UiThread; import android.arch.lifecycle.LifecycleOwner; import android.arch.lifecycle.LifecycleRegistry; import android.arch.lifecycle.OnLifecycleEvent; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.preference.PreferenceScreen; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; Loading @@ -44,18 +51,46 @@ import java.util.List; /** * Dispatcher for lifecycle events. */ public class Lifecycle { public class Lifecycle extends LifecycleRegistry { private static final String TAG = "LifecycleObserver"; private final List<LifecycleObserver> mObservers = new ArrayList<>(); private final LifecycleProxy mProxy = new LifecycleProxy(); protected final List<LifecycleObserver> mObservers = new ArrayList<>(); /** * Creates a new LifecycleRegistry for the given provider. * <p> * You should usually create this inside your LifecycleOwner class's constructor and hold * onto the same instance. * * @param provider The owner LifecycleOwner */ public Lifecycle(@NonNull LifecycleOwner provider) { super(provider); addObserver(mProxy); } /** * Registers a new observer of lifecycle events. */ @UiThread public <T extends LifecycleObserver> T addObserver(T observer) { @Override public void addObserver(android.arch.lifecycle.LifecycleObserver observer) { ThreadUtils.ensureMainThread(); super.addObserver(observer); if (observer instanceof LifecycleObserver) { mObservers.add((LifecycleObserver) observer); } } @UiThread @Override public void removeObserver(android.arch.lifecycle.LifecycleObserver observer) { ThreadUtils.ensureMainThread(); mObservers.add(observer); return observer; super.removeObserver(observer); if (observer instanceof LifecycleObserver) { mObservers.remove(observer); } } public void onAttach(Context context) { Loading @@ -67,6 +102,8 @@ public class Lifecycle { } } // This method is not called from the proxy because it does not have access to the // savedInstanceState public void onCreate(Bundle savedInstanceState) { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); Loading @@ -76,7 +113,7 @@ public class Lifecycle { } } public void onStart() { private void onStart() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnStart) { Loading @@ -94,7 +131,7 @@ public class Lifecycle { } } public void onResume() { private void onResume() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnResume) { Loading @@ -103,7 +140,7 @@ public class Lifecycle { } } public void onPause() { private void onPause() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnPause) { Loading @@ -121,7 +158,7 @@ public class Lifecycle { } } public void onStop() { private void onStop() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnStop) { Loading @@ -130,7 +167,7 @@ public class Lifecycle { } } public void onDestroy() { private void onDestroy() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnDestroy) { Loading Loading @@ -168,4 +205,34 @@ public class Lifecycle { } return false; } private class LifecycleProxy implements android.arch.lifecycle.LifecycleObserver { @OnLifecycleEvent(ON_ANY) public void onLifecycleEvent(LifecycleOwner owner, Event event) { switch (event) { case ON_CREATE: // onCreate is called directly since we don't have savedInstanceState here break; case ON_START: onStart(); break; case ON_RESUME: onResume(); break; case ON_PAUSE: onPause(); break; case ON_STOP: onStop(); break; case ON_DESTROY: onDestroy(); break; case ON_ANY: Log.wtf(TAG, "Should not receive an 'ANY' event!"); break; } } } } packages/SettingsLib/src/com/android/settingslib/core/lifecycle/LifecycleObserver.java +4 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.settingslib.core.lifecycle; /** * Observer of lifecycle events. * @deprecated use {@link android.arch.lifecycle.LifecycleObserver} instead */ public interface LifecycleObserver { @Deprecated public interface LifecycleObserver extends android.arch.lifecycle.LifecycleObserver { } packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableActivity.java +20 −8 Original line number Diff line number Diff line Loading @@ -15,8 +15,16 @@ */ package com.android.settingslib.core.lifecycle; import static android.arch.lifecycle.Lifecycle.Event.ON_CREATE; import static android.arch.lifecycle.Lifecycle.Event.ON_DESTROY; import static android.arch.lifecycle.Lifecycle.Event.ON_PAUSE; import static android.arch.lifecycle.Lifecycle.Event.ON_RESUME; import static android.arch.lifecycle.Lifecycle.Event.ON_START; import static android.arch.lifecycle.Lifecycle.Event.ON_STOP; import android.annotation.Nullable; import android.app.Activity; import android.arch.lifecycle.LifecycleOwner; import android.os.Bundle; import android.os.PersistableBundle; import android.view.Menu; Loading @@ -25,17 +33,19 @@ import android.view.MenuItem; /** * {@link Activity} that has hooks to observe activity lifecycle events. */ public class ObservableActivity extends Activity { public class ObservableActivity extends Activity implements LifecycleOwner { private final Lifecycle mLifecycle = new Lifecycle(); private final Lifecycle mLifecycle = new Lifecycle(this); protected Lifecycle getLifecycle() { public Lifecycle getLifecycle() { return mLifecycle; } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { mLifecycle.onAttach(this); mLifecycle.onCreate(savedInstanceState); mLifecycle.handleLifecycleEvent(ON_CREATE); super.onCreate(savedInstanceState); } Loading @@ -43,36 +53,38 @@ public class ObservableActivity extends Activity { public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { mLifecycle.onAttach(this); mLifecycle.onCreate(savedInstanceState); mLifecycle.handleLifecycleEvent(ON_CREATE); super.onCreate(savedInstanceState, persistentState); } @Override protected void onStart() { mLifecycle.onStart(); mLifecycle.handleLifecycleEvent(ON_START); super.onStart(); } @Override protected void onResume() { mLifecycle.onResume(); mLifecycle.handleLifecycleEvent(ON_RESUME); super.onResume(); } @Override protected void onPause() { mLifecycle.onPause(); mLifecycle.handleLifecycleEvent(ON_PAUSE); super.onPause(); } @Override protected void onStop() { mLifecycle.onStop(); mLifecycle.handleLifecycleEvent(ON_STOP); super.onStop(); } @Override protected void onDestroy() { mLifecycle.onDestroy(); mLifecycle.handleLifecycleEvent(ON_DESTROY); super.onDestroy(); } Loading packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableDialogFragment.java +26 −12 Original line number Diff line number Diff line Loading @@ -15,9 +15,17 @@ */ package com.android.settingslib.core.lifecycle; import static android.arch.lifecycle.Lifecycle.Event.ON_CREATE; import static android.arch.lifecycle.Lifecycle.Event.ON_DESTROY; import static android.arch.lifecycle.Lifecycle.Event.ON_PAUSE; import static android.arch.lifecycle.Lifecycle.Event.ON_RESUME; import static android.arch.lifecycle.Lifecycle.Event.ON_START; import static android.arch.lifecycle.Lifecycle.Event.ON_STOP; import android.app.DialogFragment; import android.arch.lifecycle.LifecycleOwner; import android.content.Context; import android.support.annotation.VisibleForTesting; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; Loading @@ -25,9 +33,9 @@ import android.view.MenuItem; /** * {@link DialogFragment} that has hooks to observe fragment lifecycle events. */ public class ObservableDialogFragment extends DialogFragment { public class ObservableDialogFragment extends DialogFragment implements LifecycleOwner { protected final Lifecycle mLifecycle = createLifecycle(); protected final Lifecycle mLifecycle = new Lifecycle(this); @Override public void onAttach(Context context) { Loading @@ -35,33 +43,40 @@ public class ObservableDialogFragment extends DialogFragment { mLifecycle.onAttach(context); } @Override public void onCreate(Bundle savedInstanceState) { mLifecycle.onCreate(savedInstanceState); mLifecycle.handleLifecycleEvent(ON_CREATE); super.onCreate(savedInstanceState); } @Override public void onStart() { mLifecycle.onStart(); mLifecycle.handleLifecycleEvent(ON_START); super.onStart(); } @Override public void onResume() { mLifecycle.onResume(); mLifecycle.handleLifecycleEvent(ON_RESUME); super.onResume(); } @Override public void onPause() { mLifecycle.onPause(); mLifecycle.handleLifecycleEvent(ON_PAUSE); super.onPause(); } @Override public void onStop() { mLifecycle.onStop(); mLifecycle.handleLifecycleEvent(ON_STOP); super.onStop(); } @Override public void onDestroy() { mLifecycle.onDestroy(); mLifecycle.handleLifecycleEvent(ON_DESTROY); super.onDestroy(); } Loading @@ -86,9 +101,8 @@ public class ObservableDialogFragment extends DialogFragment { return lifecycleHandled; } @VisibleForTesting(otherwise = VisibleForTesting.NONE) /** @return a new lifecycle. */ public static Lifecycle createLifecycle() { return new Lifecycle(); @Override public Lifecycle getLifecycle() { return mLifecycle; } } Loading
packages/SettingsLib/Android.mk +4 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,10 @@ LOCAL_SHARED_ANDROID_LIBRARIES := \ android-support-v7-appcompat \ android-support-v14-preference LOCAL_SHARED_JAVA_LIBRARIES := \ apptoolkit-lifecycle-common \ apptoolkit-lifecycle-runtime LOCAL_STATIC_JAVA_LIBRARY := legacy-android-test LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res Loading
packages/SettingsLib/src/com/android/settingslib/core/lifecycle/Lifecycle.java +77 −10 Original line number Diff line number Diff line Loading @@ -15,11 +15,18 @@ */ package com.android.settingslib.core.lifecycle; import static android.arch.lifecycle.Lifecycle.Event.ON_ANY; import android.annotation.UiThread; import android.arch.lifecycle.LifecycleOwner; import android.arch.lifecycle.LifecycleRegistry; import android.arch.lifecycle.OnLifecycleEvent; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.preference.PreferenceScreen; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; Loading @@ -44,18 +51,46 @@ import java.util.List; /** * Dispatcher for lifecycle events. */ public class Lifecycle { public class Lifecycle extends LifecycleRegistry { private static final String TAG = "LifecycleObserver"; private final List<LifecycleObserver> mObservers = new ArrayList<>(); private final LifecycleProxy mProxy = new LifecycleProxy(); protected final List<LifecycleObserver> mObservers = new ArrayList<>(); /** * Creates a new LifecycleRegistry for the given provider. * <p> * You should usually create this inside your LifecycleOwner class's constructor and hold * onto the same instance. * * @param provider The owner LifecycleOwner */ public Lifecycle(@NonNull LifecycleOwner provider) { super(provider); addObserver(mProxy); } /** * Registers a new observer of lifecycle events. */ @UiThread public <T extends LifecycleObserver> T addObserver(T observer) { @Override public void addObserver(android.arch.lifecycle.LifecycleObserver observer) { ThreadUtils.ensureMainThread(); super.addObserver(observer); if (observer instanceof LifecycleObserver) { mObservers.add((LifecycleObserver) observer); } } @UiThread @Override public void removeObserver(android.arch.lifecycle.LifecycleObserver observer) { ThreadUtils.ensureMainThread(); mObservers.add(observer); return observer; super.removeObserver(observer); if (observer instanceof LifecycleObserver) { mObservers.remove(observer); } } public void onAttach(Context context) { Loading @@ -67,6 +102,8 @@ public class Lifecycle { } } // This method is not called from the proxy because it does not have access to the // savedInstanceState public void onCreate(Bundle savedInstanceState) { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); Loading @@ -76,7 +113,7 @@ public class Lifecycle { } } public void onStart() { private void onStart() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnStart) { Loading @@ -94,7 +131,7 @@ public class Lifecycle { } } public void onResume() { private void onResume() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnResume) { Loading @@ -103,7 +140,7 @@ public class Lifecycle { } } public void onPause() { private void onPause() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnPause) { Loading @@ -121,7 +158,7 @@ public class Lifecycle { } } public void onStop() { private void onStop() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnStop) { Loading @@ -130,7 +167,7 @@ public class Lifecycle { } } public void onDestroy() { private void onDestroy() { for (int i = 0, size = mObservers.size(); i < size; i++) { final LifecycleObserver observer = mObservers.get(i); if (observer instanceof OnDestroy) { Loading Loading @@ -168,4 +205,34 @@ public class Lifecycle { } return false; } private class LifecycleProxy implements android.arch.lifecycle.LifecycleObserver { @OnLifecycleEvent(ON_ANY) public void onLifecycleEvent(LifecycleOwner owner, Event event) { switch (event) { case ON_CREATE: // onCreate is called directly since we don't have savedInstanceState here break; case ON_START: onStart(); break; case ON_RESUME: onResume(); break; case ON_PAUSE: onPause(); break; case ON_STOP: onStop(); break; case ON_DESTROY: onDestroy(); break; case ON_ANY: Log.wtf(TAG, "Should not receive an 'ANY' event!"); break; } } } }
packages/SettingsLib/src/com/android/settingslib/core/lifecycle/LifecycleObserver.java +4 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.settingslib.core.lifecycle; /** * Observer of lifecycle events. * @deprecated use {@link android.arch.lifecycle.LifecycleObserver} instead */ public interface LifecycleObserver { @Deprecated public interface LifecycleObserver extends android.arch.lifecycle.LifecycleObserver { }
packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableActivity.java +20 −8 Original line number Diff line number Diff line Loading @@ -15,8 +15,16 @@ */ package com.android.settingslib.core.lifecycle; import static android.arch.lifecycle.Lifecycle.Event.ON_CREATE; import static android.arch.lifecycle.Lifecycle.Event.ON_DESTROY; import static android.arch.lifecycle.Lifecycle.Event.ON_PAUSE; import static android.arch.lifecycle.Lifecycle.Event.ON_RESUME; import static android.arch.lifecycle.Lifecycle.Event.ON_START; import static android.arch.lifecycle.Lifecycle.Event.ON_STOP; import android.annotation.Nullable; import android.app.Activity; import android.arch.lifecycle.LifecycleOwner; import android.os.Bundle; import android.os.PersistableBundle; import android.view.Menu; Loading @@ -25,17 +33,19 @@ import android.view.MenuItem; /** * {@link Activity} that has hooks to observe activity lifecycle events. */ public class ObservableActivity extends Activity { public class ObservableActivity extends Activity implements LifecycleOwner { private final Lifecycle mLifecycle = new Lifecycle(); private final Lifecycle mLifecycle = new Lifecycle(this); protected Lifecycle getLifecycle() { public Lifecycle getLifecycle() { return mLifecycle; } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { mLifecycle.onAttach(this); mLifecycle.onCreate(savedInstanceState); mLifecycle.handleLifecycleEvent(ON_CREATE); super.onCreate(savedInstanceState); } Loading @@ -43,36 +53,38 @@ public class ObservableActivity extends Activity { public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { mLifecycle.onAttach(this); mLifecycle.onCreate(savedInstanceState); mLifecycle.handleLifecycleEvent(ON_CREATE); super.onCreate(savedInstanceState, persistentState); } @Override protected void onStart() { mLifecycle.onStart(); mLifecycle.handleLifecycleEvent(ON_START); super.onStart(); } @Override protected void onResume() { mLifecycle.onResume(); mLifecycle.handleLifecycleEvent(ON_RESUME); super.onResume(); } @Override protected void onPause() { mLifecycle.onPause(); mLifecycle.handleLifecycleEvent(ON_PAUSE); super.onPause(); } @Override protected void onStop() { mLifecycle.onStop(); mLifecycle.handleLifecycleEvent(ON_STOP); super.onStop(); } @Override protected void onDestroy() { mLifecycle.onDestroy(); mLifecycle.handleLifecycleEvent(ON_DESTROY); super.onDestroy(); } Loading
packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableDialogFragment.java +26 −12 Original line number Diff line number Diff line Loading @@ -15,9 +15,17 @@ */ package com.android.settingslib.core.lifecycle; import static android.arch.lifecycle.Lifecycle.Event.ON_CREATE; import static android.arch.lifecycle.Lifecycle.Event.ON_DESTROY; import static android.arch.lifecycle.Lifecycle.Event.ON_PAUSE; import static android.arch.lifecycle.Lifecycle.Event.ON_RESUME; import static android.arch.lifecycle.Lifecycle.Event.ON_START; import static android.arch.lifecycle.Lifecycle.Event.ON_STOP; import android.app.DialogFragment; import android.arch.lifecycle.LifecycleOwner; import android.content.Context; import android.support.annotation.VisibleForTesting; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; Loading @@ -25,9 +33,9 @@ import android.view.MenuItem; /** * {@link DialogFragment} that has hooks to observe fragment lifecycle events. */ public class ObservableDialogFragment extends DialogFragment { public class ObservableDialogFragment extends DialogFragment implements LifecycleOwner { protected final Lifecycle mLifecycle = createLifecycle(); protected final Lifecycle mLifecycle = new Lifecycle(this); @Override public void onAttach(Context context) { Loading @@ -35,33 +43,40 @@ public class ObservableDialogFragment extends DialogFragment { mLifecycle.onAttach(context); } @Override public void onCreate(Bundle savedInstanceState) { mLifecycle.onCreate(savedInstanceState); mLifecycle.handleLifecycleEvent(ON_CREATE); super.onCreate(savedInstanceState); } @Override public void onStart() { mLifecycle.onStart(); mLifecycle.handleLifecycleEvent(ON_START); super.onStart(); } @Override public void onResume() { mLifecycle.onResume(); mLifecycle.handleLifecycleEvent(ON_RESUME); super.onResume(); } @Override public void onPause() { mLifecycle.onPause(); mLifecycle.handleLifecycleEvent(ON_PAUSE); super.onPause(); } @Override public void onStop() { mLifecycle.onStop(); mLifecycle.handleLifecycleEvent(ON_STOP); super.onStop(); } @Override public void onDestroy() { mLifecycle.onDestroy(); mLifecycle.handleLifecycleEvent(ON_DESTROY); super.onDestroy(); } Loading @@ -86,9 +101,8 @@ public class ObservableDialogFragment extends DialogFragment { return lifecycleHandled; } @VisibleForTesting(otherwise = VisibleForTesting.NONE) /** @return a new lifecycle. */ public static Lifecycle createLifecycle() { return new Lifecycle(); @Override public Lifecycle getLifecycle() { return mLifecycle; } }