android前后台切换判断

mac2025-10-24  5

package yuku.alkitab.coin; import android.app.Activity; import android.app.Application; import android.os.Bundle; public class AppStateTracker { public static final int STATE_FOREGROUND = 0; public static final int STATE_BACKGROUND = 1; private static int currentState; public static int getCurrentState() { return currentState; } public interface AppStateChangeListener { void appTurnIntoForeground(); void appTurnIntoBackGround(); } public static void track(Application application, final AppStateChangeListener appStateChangeListener){ application.registerActivityLifecycleCallbacks(new SimpleActivityLifecycleCallbacks(){ private int resumeActivityCount = 0; @Override public void onActivityStarted(Activity activity) { if (resumeActivityCount==0){ currentState = STATE_FOREGROUND; appStateChangeListener.appTurnIntoForeground(); } resumeActivityCount++; } @Override public void onActivityStopped(Activity activity) { resumeActivityCount--; if (resumeActivityCount==0){ currentState = STATE_BACKGROUND; appStateChangeListener.appTurnIntoBackGround(); } } }); } private static class SimpleActivityLifecycleCallbacks implements Application .ActivityLifecycleCallbacks{ @Override public void onActivityCreated(Activity activity, Bundle bundle) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { } @Override public void onActivityDestroyed(Activity activity) { } } }

在自定义的application基类中的onCreate()方法中使用

AppStateTracker.track(this, new AppStateTracker.AppStateChangeListener() { @Override public void appTurnIntoForeground() { // 处理app到前台的逻辑 touchEventRecord = new TouchEventRecord("appresume",System.currentTimeMillis(),0,0); } @Override public void appTurnIntoBackGround() { // app处理到到后台的逻辑 } });
最新回复(0)