Android应用程序前后台的判断

来源:互联网 发布:list排序最快方法 java 编辑:程序博客网 时间:2024/06/07 05:37

1、Application类    

    @Overridepublic void onCreate() {super.onCreate(); registerActivityLifecycleCallbacks(new NewsLifecycleHandler()); }

2、Application.ActivityLifecycleCallbacks类

package com.example.verticalcall3.tools;import android.app.Activity;  import android.app.Application;  import android.os.Bundle;  /** * 用于判断App是否在后台  * @author TianMing.Xiong * */public class NewsLifecycleHandler implementsApplication.ActivityLifecycleCallbacks {// I use four separate variables here. You can, of course, just use two and// increment/decrement them instead of using four and incrementing them all.private static int resumed;private static int paused;private static int started;private static int stopped;public NewsLifecycleHandler() {resetVariables();}public void resetVariables() {resumed = 0;paused = 0;started = 0;stopped = 0;}@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {}@Overridepublic void onActivityDestroyed(Activity activity) {}@Overridepublic void onActivityResumed(Activity activity) {++resumed;}@Overridepublic void onActivityPaused(Activity activity) {++paused;android.util.Log.w("test", "application is in foreground: "+ (resumed > paused));}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}@Overridepublic void onActivityStarted(Activity activity) {++started;}@Overridepublic void onActivityStopped(Activity activity) {++stopped;android.util.Log.w("test", "application is visible: "+ (started > stopped));}// If you want a static function you can use to check if your application is// foreground/background, you can use the following:public static boolean isApplicationVisible() {return started > stopped;}public static boolean isApplicationInForeground() {return resumed > paused;}public static boolean isApplicationInBackground() {return started == stopped;}}


3、使用方法

// 判断app在前台或后天boolean isBackground = NewsLifecycleHandler.isApplicationInBackground();



原创粉丝点击