-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


Android Architecture Components. 2. Lifecycle

, 09 2017 . 20:06 +
image
, Lifecycle , Activity/Fragment , . , .

: Lifecycle, LifecycleActivity, LifecycleFragment, LifecycleService, ProcessLifecycleOwner, LifecycleRegistry. : LifecycleOwner, LifecycleObserver, LifecycleRegistryOwner.

Lifecycle , c LifecycleObserver. : addObserver(LifecycleObserver), removeObserver(LifecycleObserver) getCurrentState(). , .

enum. Events State .

Events ON_CREATE, ON_RESUME, ON_START, ON_PAUSE, ON_STOP, ON_DESTROY, ON_ANY . OnLifecycleEvent, .
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
   void stateUpdated() {
      //         .
   }


State : INITIALIZED, CREATED, STARTED, RESUMED, DESTROYED. getCurrentState() Lifecycle. Enum State itAtLeast(State), State .

Lifecycle, owner, observer, . owner , observer , owner super() .

Owner LifecycleOwner, getLifecycle(), Lifecycle.

Observer LifecycleObserver.

Activity/Fragment, owner-, Lifecycle, : LifecycleRegistry LifecycleRegistryOwner.

LifecycleRegistryOwner, LifecycleOwner getLifecycle() LifecycleRegistry Lifecycle.

LifecycleRegistry, Lifecycle , .

:
public class MyFragment extends Fragment implements LifecycleRegistryOwner {
    LifecycleRegistry lifecycleRegistry = new LifecycleRegistry(this);
    @Override
    public LifecycleRegistry getLifecycle() {
       return lifecycleRegistry;
    }
}


android.arch.lifecycle 4 owner: LifecycleActivity, LifecycleFragment, LifecycleService, ProcessLifecycleOwner.

LifecycleActivity FragmentActivity c LifecycleRegistryOwner. Lifecycle support library.

LifecycleFragment Fragment c support.v4, LivecycleActivity LifecycleRegistryOwner .

LifecycleService Service, LifecycleOwner.

ProcessLifecycleOwner , Lifecycle . .

, owner observer owner getLifecycle().addObserver(LifecycleObserver) . , SomeObserver, ON_CREATE ON_STOP, owner-, enum, :

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
   }
}


, Lifecycle, Lifecycle , . , .

LifecycleActivity:
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);
}
}


LifecycleFragment:
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);
   }
}


LifecycleService, 5 , Application:
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);
}
}


ProcessLifecycleOwner Application, ProcessLifecycleOwner singleton :
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);
}
}


: here

:

developer.android.com/reference/android/arch/lifecycle/package-summary.html

developer.android.com/topic/libraries/architecture/lifecycle.html

LiveData .
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/332718/


: [1] []
 

:
: 

: ( )

:

  URL