软件编程
位置:首页>> 软件编程>> Android编程>> Android 监听应用前/后台切换实例代码

Android 监听应用前/后台切换实例代码

作者:实例波  发布时间:2021-06-05 05:25:22 

标签:android,监听,应用

前言

这周接到一个需求,需要在应用从后台切换到前台时,展示我们的广告。展示页面其实可以复用以前的开屏广告页,唯一的问题就是如何监听应用从后台切到了前台。

正文

在众多方法中,我采用了以下这种方式。废话不多说,咱们直接看代码:


//自定义Application类
public class MyApplication extends Application

在清单文件中声明


<application
   android:name=".MyApplication"  
   android:allowBackup="true"
   android:icon="@mipmap/ic_launcher"
   android:label="@string/app_name"
   android:supportsRtl="true"
   android:theme="@style/AppTheme">

在MyApplication里重写onTrimMemory方法:


 @Override
 public void onTrimMemory(int level) {
   super.onTrimMemory(level);
   if (level == TRIM_MEMORY_UI_HIDDEN) {
     isBackGround = true;
     Log.i("bo", "APP遁入后台");
   }
 }

onTrimMemory方法为开发者提供了一个合适的时机,用来释放掉一些不用的资源,从而让我们的应用在后台存活更长时间。其中level参数就代表我们的应用当前在内存中的状态,TRIM_MEMORY_UI_HIDDEN代表应用从前台切到了后台。这个时候我们便可以标记应用切换到了后台。

接下来需要监听应用在什么时候回到了前台:


registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
     @Override
     public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
     }

@Override
     public void onActivityStarted(Activity activity) {
     }

@Override
     public void onActivityResumed(Activity activity) {
       if (isBackGround) {
         isBackGround = false;
         Log.i("bo", "APP回到了前台");
       }
     }

@Override
     public void onActivityPaused(Activity activity) {
     }

@Override
     public void onActivityStopped(Activity activity) {
     }

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

@Override
     public void onActivityDestroyed(Activity activity) {
     }
   });

我们使用registerActivityLifecycleCallbacks来监听所有Activity的生命周期回调,并在onActivityResumed方法中进行判断:调用了Activity的onResume方法,并且已经标记为后台状态,那么就可以判断APP回到了前台。

以下是log输出:

Android 监听应用前/后台切换实例代码

来源:http://www.jianshu.com/p/45af2b52e946?utm_source=tuicool&utm_medium=referral

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com