1 继承Application.ActivityLifecycleCallbacks ,需要API > 14 , 现在基本上Android机都能达到这个要求。
public class ForegroundCallbacks implements Application.ActivityLifecycleCallbacks {
public static final long CHECK_DELAY = 500;
public static final String TAG = ForegroundCallbacks.class.getName();

public interface Listener {    public void onBecameForeground();    public void onBecameBackground();}private static ForegroundCallbacks instance;private boolean foreground = false, paused = true;private Handler handler = new Handler();private List listeners = new CopyOnWriteArrayList();private Runnable check;public static ForegroundCallbacks init(Application application) {    if (instance == null) {        instance = new ForegroundCallbacks();        application.registerActivityLifecycleCallbacks(instance);    }    return instance;}public static ForegroundCallbacks get(Application application) {    if (instance == null) {        init(application);    }    return instance;}public static ForegroundCallbacks get(Context ctx) {    if (instance == null) {        Context appCtx = ctx.getApplicationContext();        if (appCtx instanceof Application) {            init((Application) appCtx);        }        throw new IllegalStateException(                "Foreground is not initialised and " + "cannot obtain the Application object");    }    return instance;}public static ForegroundCallbacks get() {    if (instance == null) {        throw new IllegalStateException(                "Foreground is not initialised - invoke " + "at least once with parameterised init/get");    }    return instance;}public boolean isForeground() {    return foreground;}public boolean isBackground() {    return !foreground;}public void addListener(Listener listener) {    listeners.add(listener);}public void removeListener(Listener listener) {    listeners.remove(listener);}@Overridepublic void onActivityResumed(Activity activity) {    paused = false;    boolean wasBackground = !foreground;    foreground = true;    if (check != null)        handler.removeCallbacks(check);    if (wasBackground) {        A.e("went foreground");        for (Listener l : listeners) {            try {                l.onBecameForeground();            } catch (Exception exc) {                A.e("Listener threw exception!", exc);            }        }    } else {        A.e("still foreground");    }}@Overridepublic void onActivityPaused(Activity activity) {    paused = true;    if (check != null)        handler.removeCallbacks(check);    handler.postDelayed(check = new Runnable() {        @Override        public void run() {            if (foreground && paused) {                foreground = false;                A.e("went background");                for (Listener l : listeners) {                    try {                        l.onBecameBackground();                    } catch (Exception exc) {                        A.e("Listener threw exception!", exc);                    }                }            } else {                A.e("still foreground");            }        }    }, CHECK_DELAY);}@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {}@Overridepublic void onActivityStarted(Activity activity) {}@Overridepublic void onActivityStopped(Activity activity) {}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}@Overridepublic void onActivityDestroyed(Activity activity) {}

}

2 在Application中注册事件:
callback = ForegroundCallbacks.init(this);
callback.addListener(new Listener() {

        @Override        public void onBecameForeground() {            startService(new Intent(AppContext.this, CheckVipService.class));            System.out.println("---------------------------- 前台");        }        @Override        public void onBecameBackground() {            System.out.println("---------------------------- 后台");        }    });

更多相关文章

  1. 后台动态添加布局文件、控件与动态设置属性
  2. :Android实现程序前后台切换效果
  3. Android清理后台所有历史App任务
  4. 【android】关于退出时关闭“后台”显示
  5. Android实现程序前后台切换效果
  6. android后台进程隐藏手段
  7. android的service中在后台弹出提示框
  8. Android 保活后台启动Service 8.0踩坑记录
  9. 如何隐藏Activity的界面,让其在后台运行

随机推荐

  1. Android之Adapter用法总结
  2. android binder 讲解
  3. Android的webview研究
  4. Android(安卓)NDK会带来什么,除去你对NDK
  5. android emulator中调用部署在我自己电脑
  6. Android(安卓)4.1.2系统添加重启功能
  7. Android(安卓)WIFI 类分析
  8. Android(安卓)Sensor传感器系统架构初探
  9. Android(安卓)- 文本框的输入法控制和默
  10. 使用SourceInsight查看android中的native