之前處理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里。