Android 监听应用前/后台切换实例代码
程序员文章站
2023-11-28 23:49:40
前言
这周接到一个需求,需要在应用从后台切换到前台时,展示我们的广告。展示页面其实可以复用以前的开屏广告页,唯一的问题就是如何监听应用从后台切到了前台。
正文
在众多...
前言
这周接到一个需求,需要在应用从后台切换到前台时,展示我们的广告。展示页面其实可以复用以前的开屏广告页,唯一的问题就是如何监听应用从后台切到了前台。
正文
在众多方法中,我采用了以下这种方式。废话不多说,咱们直接看代码:
//自定义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输出:
以上就是我对这个问题的解决方案。
结尾
这个方案要求api大于等于14,因为registeractivitylifecyclecallbacks方法要求api在14以上。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。