Android Architecture Components. 2. Lifecycle |
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
void stateUpdated() {
// .
}
public class MyFragment extends Fragment implements LifecycleRegistryOwner {
LifecycleRegistry lifecycleRegistry = new LifecycleRegistry(this);
@Override
public LifecycleRegistry getLifecycle() {
return lifecycleRegistry;
}
}
public class SomeObserver implements LifecycleObserver {
private Owner owner;
public SomeObserver(Lifecycle lifecycle, Owner owner) {
this.owner = owner;
lifecycle.addObserver(this);
}
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
void onCreate() {
Log.d(Observer, owner + : onCreate);
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
void onStop() {
Log.d(Observer, owner + : onStop);
}
enum Owner {
ACTIVITY, FRAGMENT, PROCESS, SERVICE
}
}
public class MainActivity extends LifecycleActivity {
SomeObserver someObserver = new SomeObserver(getLifecycle(), SomeObserver.Owner.ACTIVITY);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(Owner, onCreate);
setContentView(R.layout.activity_main);
}
@Override
protected void onStop() {
super.onStop();
Log.d(Owner, onStop);
}
}
public class MyFragment extends LifecycleFragment {
SomeObserver someObserver = new SomeObserver(getLifecycle(), SomeObserver.Owner.FRAGMENT);
public MyFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_my, container, false);
}
}
public class MyService extends LifecycleService {
SomeObserver someObserver;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
someObserver = new SomeObserver(getLifecycle(), SomeObserver.Owner.SERVICE);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
stopSelf();
}
}, 5000);
return super.onStartCommand(intent, flags, startId);
}
}
public class CustomApplication extends Application {
private SomeObserver processObserver;
@Override
public void onCreate() {
super.onCreate();
processObserver = new SomeObserver(ProcessLifecycleOwner.get().getLifecycle(), SomeObserver.Owner.PROCESS);
Intent intent = new Intent(this, MyService.class);
startService(intent);
}
}