Android 监听应用前/后台切换实例代码
作者:实例波 时间:2021-06-05 05:25:22
前言
这周接到一个需求,需要在应用从后台切换到前台时,展示我们的广告。展示页面其实可以复用以前的开屏广告页,唯一的问题就是如何监听应用从后台切到了前台。
正文
在众多方法中,我采用了以下这种方式。废话不多说,咱们直接看代码:
//自定义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输出:
来源:http://www.jianshu.com/p/45af2b52e946?utm_source=tuicool&utm_medium=referral
标签:android,监听,应用
0
投稿
猜你喜欢
Flutter源码分析之自定义控件(RenderBox)指南
2022-09-08 21:17:28
为什么入门大数据选择Python而不是Java?
2022-04-01 00:14:46
Java反射机制在Spring IOC中的应用详解
2023-11-10 14:09:32
零基础写Java知乎爬虫之获取知乎编辑推荐内容
2023-11-29 04:33:39
C#执行外部命令的方法
2022-12-21 18:03:32
使用SpringMVC在redirect重定向的时候携带参数的问题
2021-06-17 05:18:43
Admin - SpringBoot + Maven 多启动环境配置实例详解
2022-03-08 09:48:16
浅谈Mybatis传参类型如何确定
2023-11-12 12:13:21
基于WPF实现3D画廊动画效果的示例代码
2022-02-06 08:02:22
SpringBoot集成Beetl后统一处理页面异常的方法
2023-11-10 19:57:55
Android sdutio配置Zxing进行扫码功能的实现方法
2023-12-12 15:40:13
Android 模拟新闻APP显示界面滑动优化实例代码
2023-06-07 14:11:02
Java的静态类型检查示例代码详解
2023-08-09 10:42:13
使用PageHelper插件实现Service层分页
2023-03-06 00:40:39
Android API开发之SMS短信服务处理和获取联系人的方法
2021-10-23 03:22:15
c#接口使用示例分享
2022-02-22 17:38:46
浅谈byte和长度为8的boolean数组互相转换
2023-11-07 00:34:37
Spring占位符Placeholder的实现原理解析
2023-03-14 18:14:00
Android webview与js交换JSON对象数据示例
2022-10-19 18:36:18
C#中out参数、ref参数与值参数的用法及区别
2022-10-16 17:15:39