java 检查Android App的后台/前台状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 检查Android App的后台/前台状态相关的知识,希望对你有一定的参考价值。

import android.app.Activity;
import android.app.Application;
import android.content.ComponentCallbacks2;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;

/**
 * Created by Fabrizio on 13/11/17.
 */

public class ApplicationLifecycleHandler implements Application.ActivityLifecycleCallbacks, ComponentCallbacks2 {

    private final String TAG = ApplicationLifecycleHandler.class.getSimpleName();
    private boolean isInForeground = false;
    private int numActivities = 0;

    private ApplicationLifecycleHandlerListener listener;

    public ApplicationLifecycleHandler(ApplicationLifecycleHandlerListener listenerInput)
    {
        super();

        this.listener = listenerInput;
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {
    }

    @Override
    public void onActivityStarted(Activity activity) {
        if (numActivities == 0) {
            // app went to foreground
            Log.d(TAG, "app went to foreground");
            isInForeground = true;

            if(this.listener!=null)
            {
                this.listener.onApplicationLifecycleForegroundStatusChanged(isInForeground);
            }
        }
        numActivities++;
    }

    @Override
    public void onActivityResumed(Activity activity) {

    }

    @Override
    public void onActivityPaused(Activity activity) {
    }

    @Override
    public void onActivityStopped(Activity activity) {
        numActivities--;
        if (numActivities == 0) {
            // app went to foreground
            Log.d(TAG, "app went to background");
            isInForeground = false;

            if(this.listener!=null)
            {
                this.listener.onApplicationLifecycleForegroundStatusChanged(isInForeground);
            }
        }
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
    }

    @Override
    public void onConfigurationChanged(Configuration configuration) {
    }

    @Override
    public void onLowMemory() {
    }

    @Override
    public void onTrimMemory(int i) {
        if(i == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN){
            Log.d(TAG, "app went to background");
            isInForeground = false;
            numActivities = 0;

            if(this.listener!=null)
            {
                this.listener.onApplicationLifecycleForegroundStatusChanged(isInForeground);
            }

        }
    }

    public interface ApplicationLifecycleHandlerListener
    {
        public void onApplicationLifecycleForegroundStatusChanged(boolean isInForeground);
    }
}

以上是关于java 检查Android App的后台/前台状态的主要内容,如果未能解决你的问题,请参考以下文章