Android应用程序转到后台并回到前台判断方法

Android应⽤程序转到后台并回到前台判断⽅法
我们知道,当我们按返回或Home键退出应⽤程序的界⾯时,应⽤程序会在后台被挂起。这么设计的好处是,由于应⽤被系统缓存在内存中,那么在⽤户打开启动应⽤时就可以通过调⽤缓存,快速启动应⽤。当然,由于当今内存和处理器能⼒的限制,系统会⾃动关闭⼀些进程。
那么我如何判断这个应⽤程序在前台还是后台,应⽤从后台回到前台了?
看到⼀般都是runningProcess或者runningTasks来判断应⽤在前台还是后台
事实上,Android在SDK 14的时候提供了⼀个Callback。ActivityLifecycleCallbacks,你可以通过这个Callback拿到App所有Activity的⽣命周期回调。
public class Application extends android.app.Application {
private int activityCount;//activity的count数
private boolean isForeground;//是否在前台
@Override  public void onCreate() {
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
碳氟化钾@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override      public void onActivityStarted(Activity activity) {
中空半自动打胶机activityCount++;
}      @Override
public void onActivityResumed(Activity activity) {
} @OverrideSSL检测
public void onActivityPaused(Activity activity) {
}  @Override
public void onActivityStopped(Activity activity) {
火炬点火装置activityCount--;        if(0==activityCount){
号码池isForeground=false;        }
}  @Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}    @Override
public void onActivityDestroyed(Activity activity) {
}    });  }  }
这个Callback写在Application⾥的,你可以在Application初始化的时候来注册。
通过这些回调我们可以将这个计数放在onStart()和onStop()中去。activityCount==1,那么就是前台,activityCount==0,那就是后台。这样判断很很简单了吧。
public abstract class BaseClass extends AppCompatActivity {
判断当前的应⽤程序是不是在运⾏
//需要申请GETTask权限
private boolean isApplicationBroughtToBackground() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);    if (!tasks.isEmpty()) {      ComponentName topActivity = (0).topActivity;
if (!PackageName().equals(getPackageName())) {
return true;      }    }    return false;  }
public boolean wasBackground= false;  //声明⼀个布尔变量,记录当前的活动背景
@Override  public void onPause(){
水垢过滤器
if(isApplicationBroughtToBackground())
wasBackground= true;  }
public void onResume(){
if(wasBackground){//
Log.e("aa","从后台回到前台");    }    wasBackground= false;  }}
感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!

本文发布于:2024-09-22 16:50:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/277425.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:后台   前台   系统   时候   记录   缓存   内存
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议