ActivityLifecycleCallbacks如何判断应用是否在前台

  

本文为大家分享了ActivityLifecycleCallbacks如何判断应用是否在前台,供大家参考,具体内容如下

  

<强> ActivityManager

  

通常情况下,我们判断应用是否在前台都是通过ActivityManager。

     /* *   *活动是否在前台   * @param上下文   * @return   */私人布尔isOnForground(上下文语境){   ActivityManager ActivityManager=(ActivityManager) context.getSystemService (ACTIVITY_SERVICE);   ListappProcessInfoList=activityManager.getRunningAppProcesses ();   如果(appProcessInfoList==null) {   返回错误;   }      字符串packageName=context.getPackageName ();   (ActivityManager。RunningAppProcessInfo processInfo: appProcessInfoList) {   如果(processInfo.processName.equals (packageName),,processInfo。==ActivityManager.RunningAppProcessInfo重要性。IMPORTANCE_FOREGROUND) {   返回true;   }   }   返回错误;   }      

但是这个并不是最好的:

  
      <李>性能差,相当于遍历所有的进程来找前台的且包名符合的。   <李>在有些手机上不适用。
      李   
  

<强> ActivityLifecycleCallbacks

  

应用程序可以通过registerActivityLifecycleCallbacks来注册ActivityLifecycleCallbacks接口,以实现对所有活动生命周期的回调。

  

        这一点。registerActivityLifecycleCallbacks(新ActivityLifecycleCallbacks () {   @Override   公共空间>   这一点。registerActivityLifecycleCallbacks(新ActivityLifecycleCallbacks () {   @Override   公共空间onActivityCreated(活动活动,包savedInstanceState) {      }      @Override   公共空间onActivityStarted(活动活动){   数+ +;   如果(count==1) {   Log.e (“ZXK”、“前景”);   }   }      @Override   公共空间onActivityResumed(活动活动){      }      @Override   公共空间onActivityPaused(活动活动){      }      @Override   公共空间onActivityStopped(活动活动){   数,   如果(count==0) {   Log.e (“ZXK”、“背景”);   }   }      @Override   公共空间onActivitySaveInstanceState(活动活动,包outState) {      }      @Override   公共空间onActivityDestroyed(活动活动){      }   });      
      <李>新建个int变量数   <李>然后在Application.onCreate()中注册回调李   <李> onActivityStarted()中数+ 1,如果数为1,则进入前台;onActivityStopped()中把1,如果数为0,则进入后台。   
  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

ActivityLifecycleCallbacks如何判断应用是否在前台