前言
这周接到一个需求,需要在应用从后台切换到前台时,展示我们的广告。展示页面其实可以复用以前的开屏广告页,唯一的问题就是如何监听应用从后台切到了前台。
正文
在众多方法中,我采用了以下这种方式。废话不多说,咱们直接看代码:
//自定义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以上。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android 监听应用前/后台切换实例代码全部内容,希望文章能够帮你解决Android 监听应用前/后台切换实例代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)