xx
final boolean isAtLeastResumed =
lifecycle.getCurrentState().isAtLeast(Lifecycle.State.RESUMED);
Slide 21
Slide 21 text
LifecycleOwner
Lifecycle single method interface
FragmentActivity LifecycleOwner
v4 support library Fragment LifecycleOwner
public interface LifecycleOwner {
@NonNull
Lifecycle getLifecycle();
}
Slide 22
Slide 22 text
package android.support.v4.app;
@RestrictTo(LIBRARY_GROUP)
public class SupportActivity extends Activity implements LifecycleOwner {
…
@Override
public Lifecycle getLifecycle() {
return mLifecycleRegistry;
}
}
@RequiresApi(14)
abstract class BaseFragmentActivityApi14 extends SupportActivity {
@RestrictTo(LIBRARY_GROUP)
abstract class BaseFragmentActivityApi16 extends BaseFragmentActivityApi14 {
public class FragmentActivity extends BaseFragmentActivityApi16 implements
ActivityCompat.OnRequestPermissionsResultCallback,
ActivityCompat.RequestPermissionsRequestCodeValidator {
…
@Override
public Lifecycle getLifecycle() {
return super.getLifecycle();
}
}
SupportActivity Ͱ LifecycleRegistry Λ
࣮ͬͯ͞Ε͍ͯΔ
Slide 23
Slide 23 text
FragmentActivity Lifecycle
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Lifecycle lifecycle = getLifecycle();
}
Slide 24
Slide 24 text
LifecycleObserver
Lifecycle interface
@OnLifecycleEvent
Lifecycle.Event
public interface LifecycleObserver {
}
Slide 25
Slide 25 text
OnLifecycleEvent
LifecycleObserver
LifecycleEvent
ON_CREATE, ON_START, ON_RESUME, ON_PAUSE, ON_STOP,
ON_DESTROY, ON_ANY
final LifecycleObserver observer = new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void calledWhenStart() {
}
};
Slide 26
Slide 26 text
OnLifecycleEvent
final LifecycleObserver observer = new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void calledWhenOnStart() {
Log.d("Lifecycle", "ON_START");
}
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
public void calledWhenOnAny() {
Log.d("Lifecycle", "ON_ANY");
}
};
Slide 27
Slide 27 text
OnLifecycleEvent
1 LifecycleOwner
final LifecycleObserver observer = new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void startSomething(LifecycleOwner source) {
}
};
Slide 28
Slide 28 text
OnLifecycleEvent
ON_ANY 2 Lifecycle.Event
final LifecycleObserver observer = new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
public void onStateChanged(LifecycleOwner source,
Lifecycle.Event event) {
}
};
Slide 29
Slide 29 text
GenericLifecycleObserver
LifecycleObserver interface
Lifecycle.Event onStateChanged()
public interface GenericLifecycleObserver extends LifecycleObserver {
/**
* Called when a state transition event happens.
*
* @param source The source of the event
* @param event The event
*/
void onStateChanged(LifecycleOwner source, Lifecycle.Event event);
}
GenericLifecycleObserver @hide
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
Slide 30
Slide 30 text
LifecycleRegistry
Observer Lifecycle
LifecycleOwner
FragmentActivity, v4 support library Fragment
@RestrictTo(LIBRARY_GROUP)
public class SupportActivity extends Activity implements LifecycleOwner {
…
private LifecycleRegistry mLifecycleRegistry = new LifecycleRegistry(this);
onSaveInstanceState
onSaveInstanceState() onStart() UI
onSaveInstanceState() onStop()
FragmentActivity v4 support library Fragment
onSaveInstanceState() CREATED
LifecycleService
LifecycleOwner Service
public class MyService extends LifecycleService {
@Override
public void onCreate() {
super.onCreate();
final Lifecycle lifecycle = getLifecycle();
}
}
Slide 36
Slide 36 text
ServiceLifecycleDispatcher
Service Lifecycle
LifecycleService
LifecycleService
public class LifecycleService extends Service implements LifecycleOwner {
private final ServiceLifecycleDispatcher mDispatcher = new ServiceLifecycleDispatcher(this);
@CallSuper
@Override
public void onCreate() {
mDispatcher.onServicePreSuperOnCreate();
super.onCreate();
}