之前处理android应用的前后台切换使用的是onStart()/onStop()方法,还需要做一些额外的处理,今天发现使用 ProcessLifecycleOwner 更简单。
public class AudioConvertApplication extends Application { @Override public void onCreate() { super.onCreate(); ProcessLifecycleOwner.get().getLifecycle().addObserver(new ApplicationObserver()); } private static class ApplicationObserver implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_STOP) private void onAppBackground() { Log.w(TAG, "[LifecycleChecker]: app moved to background"); } @OnLifecycleEvent(Lifecycle.Event.ON_START) private void onAppForeground() { Log.w(TAG, "[LifecycleChecker]: app moved to foreground"); } } }
在 onAppBackground() 方法中处理app压入到后台时的逻辑,在 onAppForeground() 方法中处理app重新显示到前台的逻辑。
PS:上面的方法名随便起的,重要的是两个方法名上面的注解,
ProcessLifecycleOwner.get().getLifecycle().addObserver(new ApplicationObserver());
不管是在Application还是在Activity中调用都是可以的,我是写在了Application里。