Android需要事件前台和后台

Posted

技术标签:

【中文标题】Android需要事件前台和后台【英文标题】:Android Need event Foreground and Backgorund 【发布时间】:2014-03-11 14:56:16 【问题描述】:

嗨朋友们,我正在制作一个应用程序,当用户进入后台时,我需要在其中显示一些东西,当用户进入前台时再次显示。所以我需要在我们的应用程序进入后台时获取一个事件,当应用程序进入前台时在 8 以上的 api 中工作时再次获取事件。

我尝试了所有方法,但只能识别我的应用是否在前台。当我们在应用程序级别再次上线时,我需要事件。

【问题讨论】:

这个link 有助于解决我的问题... 【参考方案1】:

您可以为所有活动定义一个超类并跟踪应用程序的状态。如果所有活动都处于停止状态 - 应用程序在后台,否则 - 在前台。在您的超级活动的onStart()onStop() 方法中,您可以增加和减少可见活动的数量。然后在onStart()onStop() 检查当前是否有任何可见的活动。如果没有 - 应用程序变为活动/不活动,您可以调用您的方法:

public class SuperActivity extends Activity 
    private static int sVisibleActivitiesCount;

    @Override
    public void onStart()
        super.onStart();
        if (SuperActivity.sVisibleActivitiesCount == 0) 
            onAppBecomesActive();
        
        SuperActivity.sVisibleActivitiesCount++;
    

    @Override
    public void onStop()
        super.onStart();
        SuperActivity.sVisibleActivitiesCount--;
        if (SuperActivity.sVisibleActivitiesCount == 0) 
            onAppBecomesInactive();
        
    

    private void onAppBecomesActive() 
        // Do some staff
    

    private void onAppBecomesInactive() 
        // Do some staff
    

第二种方法是使用ActivityLifecycleCallbacks(最低 API 14)来监控活动生命周期并在一个地方跟踪应用程序状态,而不需要所有活动的超类。因此,如果您的应用具有 minSdkVersion="14",我宁愿使用这种方法。

【讨论】:

还可以在 Application 的自定义实现中添加一个布尔值,并通过 getApplication() 和强制转换在 onStart onStop 中对其进行编辑。所以不需要计数。 感谢您的回复但我仅在应用程序成为前台和后台时才需要事件。但是你的方法很棒@makovkastar

以上是关于Android需要事件前台和后台的主要内容,如果未能解决你的问题,请参考以下文章

Android - 前台和后台服务有啥区别?

Android Q - 前台服务需要后台位置权限?

对于Xamarin Android,我无法处理点击事件的后台通知

Android 监听APP进入后台或切换到前台方案对比

[FMX]将 Android 程序切换到后台及从后台切换到前台实现

Android 应用、活动状态(运行、未运行、前台/后台)