android.arch.lifecycle.Lifecycle.getCurrentState()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(10.5k)|赞(0)|评价(0)|浏览(341)

本文整理了Java中android.arch.lifecycle.Lifecycle.getCurrentState()方法的一些代码示例,展示了Lifecycle.getCurrentState()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Lifecycle.getCurrentState()方法的具体详情如下:
包路径:android.arch.lifecycle.Lifecycle
类名称:Lifecycle
方法名:getCurrentState

Lifecycle.getCurrentState介绍

[英]Returns the current state of the Lifecycle.
[中]返回生命周期的当前状态。

代码示例

代码示例来源:origin: yangchaojiang/AaComponents

/**
 * 返回是否当前生命中周期状态
 *
 * @param state Lifecycle.State
 * @return boolean
 **/
public boolean isAtLeast(Lifecycle.State state) {
  return lifecycle.getCurrentState().isAtLeast(state);
}

代码示例来源:origin: WaylonBrown/LifecycleAwareRx

@Override
public boolean test(final T object) throws Exception {
  // We've already removed the reference, don't emit anymore items.
  if (lifecycleOwner == null) {
    return false;
  }
  
  boolean isDestroyed = lifecycleOwner.getLifecycle().getCurrentState() == Lifecycle.State.DESTROYED;
  if (isDestroyed) {
    // This should have been handled in handleLifecycleEvent() at this point, but just being safe to not have
    // memory leaks.
    lifecycleOwner = null;
  }
  // If not destroyed, predicate is true and emits streams items as normal. Otherwise it ends.
  return !isDestroyed;
}

代码示例来源:origin: WaylonBrown/LifecycleAwareRx

/**
   * A {@link LifecycleOwner} is considered active if it is either STARTED or RESUMED.
   * 
   * @param lifecycleOwner to check the state of.
   * @return whether the lifecycleOwner is active.
   */
  public static boolean isInActiveState(@Nullable LifecycleOwner lifecycleOwner) {
    return lifecycleOwner != null
      && lifecycleOwner.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED);
  }
}

代码示例来源:origin: listenzz/AndroidNavigation

boolean isAtLeastStarted() {
  return getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED);
}

代码示例来源:origin: listenzz/AndroidNavigation

public void scheduleTaskAtStarted(Runnable runnable) {
  if (getLifecycle().getCurrentState() != Lifecycle.State.DESTROYED) {
    assertMainThread();
    tasks.add(runnable);
    considerExecute();
  }
}

代码示例来源:origin: XunMengWinter/Now

private void print() {
  Logger.t(TAG).i(mLifecycle.getCurrentState().name());
}

代码示例来源:origin: florent37/RxLifecycle

@Override
  public ObservableSource<T> apply(@NonNull Lifecycle lifecycle) throws Exception {
    final Lifecycle.State currentState = lifecycle.getCurrentState();
    if (currentState.equals(Lifecycle.State.RESUMED) || currentState.equals(Lifecycle.State.STARTED)) {
      return Observable.just(value);
    } else {
      return onResume()
          .map(new Function<Lifecycle.Event, T>() {
            @Override
            public T apply(@NonNull Lifecycle.Event event) throws Exception {
              return value;
            }
          });
    }
  }
});

代码示例来源:origin: rsiebert/TVHClient

private void showProgramDetails(int position) {
  selectedListPosition = position;
  Program program = recyclerViewAdapter.getItem(position);
  if (program == null || !isVisible()
      || !activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
    return;
  }
  Fragment fragment = ProgramDetailsFragment.newInstance(program.getEventId(), program.getChannelId());
  FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
  ft.replace(R.id.main, fragment);
  ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
  ft.addToBackStack(null);
  ft.commit();
}

代码示例来源:origin: listenzz/AndroidNavigation

@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
void onStateChange() {
  if (getLifecycle().getCurrentState() == Lifecycle.State.DESTROYED) {
    tasks.clear();
    getLifecycle().removeObserver(this);
  } else {
    considerExecute();
  }
}

代码示例来源:origin: WaylonBrown/LifecycleAwareRx

@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
  void onStateChange() {
    if (lifecycleOwner != null && lifecycleOwner.getLifecycle().getCurrentState() == Lifecycle.State.DESTROYED) {
      // No memory leaks please
      lifecycleOwner.getLifecycle().removeObserver(this);
      lifecycleOwner = null;
    }
  }
}

代码示例来源:origin: JeremyLiao/LiveEventBus

@MainThread
public void observeSticky(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer) {
  if (owner.getLifecycle().getCurrentState() == DESTROYED) {
    // ignore
    return;
  }
  LifecycleBoundObserver wrapper = new LifecycleBoundObserver(owner, observer);
  ObserverWrapper existing = mObservers.putIfAbsent(observer, wrapper);
  if (existing != null && !existing.isAttachedTo(owner)) {
    throw new IllegalArgumentException("Cannot add the same observer"
        + " with different lifecycles");
  }
  if (existing != null) {
    return;
  }
  owner.getLifecycle().addObserver(wrapper);
}

代码示例来源:origin: JeremyLiao/LiveDataBus

@Override
public void observe(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer) {
  if (owner.getLifecycle().getCurrentState() == DESTROYED) {
    // ignore
    return;
  }
  try {
    //use ExternalLifecycleBoundObserver instead of LifecycleBoundObserver
    LifecycleBoundObserver wrapper = new ExternalLifecycleBoundObserver(owner, observer);
    wrapper.mLastVersion = getVersion();
    //Replace "ObserverWrapper existing = mObservers.putIfAbsent(observer, wrapper);"
    Object existing = callMethodPutIfAbsent(observer, wrapper);
    //Replace "if (existing != null && !existing.isAttachedTo(owner)) {"
    if (existing != null && !callMethodIsAttachedTo(existing, owner)) {
      throw new IllegalArgumentException("Cannot add the same observer"
          + " with different lifecycles");
    }
    if (existing != null) {
      return;
    }
    owner.getLifecycle().addObserver(wrapper);
  } catch (Exception e) {
    e.printStackTrace();
  }
}

代码示例来源:origin: rsiebert/TVHClient

private void showRecordingDetails(int position) {
  selectedListPosition = position;
  recyclerViewAdapter.setPosition(position);
  TimerRecording recording = recyclerViewAdapter.getItem(position);
  if (recording == null || !isVisible()
      || !activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
    return;
  }
  if (!isDualPane) {
    Fragment fragment = TimerRecordingDetailsFragment.newInstance(recording.getId());
    FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.main, fragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.addToBackStack(null);
    ft.commit();
  } else {
    // Check what fragment is currently shown, replace if needed.
    Fragment fragment = activity.getSupportFragmentManager().findFragmentById(R.id.main);
    if (!(fragment instanceof TimerRecordingDetailsFragment)
        || !((TimerRecordingDetailsFragment) fragment).getShownId().equals(recording.getId())) {
      // Make new fragment to show this selection.
      fragment = TimerRecordingDetailsFragment.newInstance(recording.getId());
      FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
      ft.replace(R.id.details, fragment);
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
      ft.commit();
    }
  }
}

代码示例来源:origin: rsiebert/TVHClient

private void showRecordingDetails(int position) {
  selectedListPosition = position;
  recyclerViewAdapter.setPosition(position);
  SeriesRecording recording = recyclerViewAdapter.getItem(position);
  if (recording == null || !isVisible()
      || !activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
    return;
  }
  if (!isDualPane) {
    Fragment fragment = SeriesRecordingDetailsFragment.newInstance(recording.getId());
    FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.main, fragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.addToBackStack(null);
    ft.commit();
  } else {
    // Check what fragment is currently shown, replace if needed.
    Fragment fragment = activity.getSupportFragmentManager().findFragmentById(R.id.details);
    if (!(fragment instanceof SeriesRecordingDetailsFragment)
        || ((SeriesRecordingDetailsFragment) fragment).getShownId().equals(recording.getId())) {
      // Make new fragment to show this selection.
      fragment = SeriesRecordingDetailsFragment.newInstance(recording.getId());
      FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
      ft.replace(R.id.details, fragment);
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
      ft.commit();
    }
  }
}

代码示例来源:origin: rsiebert/TVHClient

Channel channel = recyclerViewAdapter.getItem(position);
if (channel == null || !isVisible()
    || !activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
  return;

代码示例来源:origin: xcesco/kripton

if (owner.getLifecycle().getCurrentState() == DESTROYED) {

代码示例来源:origin: rsiebert/TVHClient

void showRecordingDetails(int position) {
  selectedListPosition = position;
  recyclerViewAdapter.setPosition(position);
  Recording recording = recyclerViewAdapter.getItem(position);
  if (recording == null || !isVisible()
      || !activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) {
    return;
  }
  if (!isDualPane) {
    Fragment fragment = RecordingDetailsFragment.newInstance(recording.getId());
    FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.main, fragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.addToBackStack(null);
    ft.commit();
  } else {
    // Check what fragment is currently shown, replace if needed.
    Fragment fragment = activity.getSupportFragmentManager().findFragmentById(R.id.details);
    if (!(fragment instanceof RecordingDetailsFragment)
        || ((RecordingDetailsFragment) fragment).getShownDvrId() != recording.getId()) {
      // Make new fragment to show this selection.
      fragment = RecordingDetailsFragment.newInstance(recording.getId());
      FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
      ft.replace(R.id.details, fragment);
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
      ft.commit();
    }
  }
}

代码示例来源:origin: WaylonBrown/LifecycleAwareRx

/**
 * Decides whether the stream needs to be destroyed or subscribed to.
 */
private void handleCurrentLifecycleState() {
  if (lifecycleOwner != null &&
    lifecycleOwner.getLifecycle().getCurrentState() == Lifecycle.State.DESTROYED) {
    // No memory leaks please
    this.lifecycleOwner.getLifecycle().removeObserver(this);
    this.lifecycleOwner = null;
    this.baseReactiveType = null;
  } else if (LifecycleUtil.isInActiveState(lifecycleOwner) 
    && !subscribed 
    && baseReactiveType != null) {
    
    // Subscribe to stream with observer since the LifecycleOwner is now active but wasn't previously
    baseReactiveType.subscribeWithObserver();
    subscribed = true;
  }
}

代码示例来源:origin: JeremyLiao/LiveEventBus

if (owner.getLifecycle().getCurrentState() == DESTROYED) {

代码示例来源:origin: JeremyLiao/LiveDataBus

@Override
public void observe(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer) {
  //保存LifecycleOwner的当前状态
  Lifecycle lifecycle = owner.getLifecycle();
  Lifecycle.State currentState = lifecycle.getCurrentState();
  int observerSize = getLifecycleObserverMapSize(lifecycle);
  boolean needChangeState = currentState.isAtLeast(Lifecycle.State.STARTED);
  if (needChangeState) {
    //把LifecycleOwner的状态改为INITIALIZED
    setLifecycleState(lifecycle, Lifecycle.State.INITIALIZED);
    //set observerSize to -1,否则super.observe(owner, observer)的时候会无限循环
    setLifecycleObserverMapSize(lifecycle, -1);
  }
  super.observe(owner, observer);
  if (needChangeState) {
    //重置LifecycleOwner的状态
    setLifecycleState(lifecycle, currentState);
    //重置observer size,因为又添加了一个observer,所以数量+1
    setLifecycleObserverMapSize(lifecycle, observerSize + 1);
    //把Observer置为active
    hookObserverActive(observer, true);
  }
  //更改Observer的version
  hookObserverVersion(observer);
}

相关文章

微信公众号

最新文章

更多