android - Android应用程序后台的简单检查

标签 android

我通过从每个 Activity 的 onResume() 调用 plusActivity() 和从 onPause() 调用 minusActivity() 来跟踪我的应用程序中当前可见的 Activity 数量(应该是 0 或 1)

plus/minusActivity 在我的 myApplication 类中,它扩展了 Application。

这些方法递增和递减计数器。每次调用 minusActivity() 时,它还会发布一个 2 秒后运行的可运行对象。当 runnable 执行时,如果在 2 秒前最后一个 Activity 关闭后另一个 Activity 没有打开(例如 foregroundedActivities == 0 因为在 2 秒内没有调用 plusActivity() ),那么它调用一个方法来做一些需要发生的事情背景时。

这是一个 fragment :

public void plusActivity(){
    foregroundedActivities++;
}

public void minusActivity(){
    foregroundedActivities--;
    timingHandler.removeCallbacks(checkBackgroundTask);
    timingHandler.postDelayed(checkBackgroundTask, 2000);
}

public void checkIfBackgrounded(){
    if(foregroundedActivities==0){
        doWhateverWeDoWhenBackgrounded();
    }
}

public Runnable checkBackgroundTask=new Runnable(){

    @Override
    public void run() {
        checkIfBackgrounded();
    }

};

考虑到此过程运行的时间为 2 秒,并且不涉及对 Activity 的回调,这是完成后台检测的可接受方法,还是我真的需要使用服务来完成所有这些工作?这似乎有很多开销,而且我看不到任何好处,因为这似乎工作正常。

最佳答案

您的解决方案可能有效,但我不知道。

您可以使用 BroadcastReceiver .如果您使用 BroadcastReceiver,您可以在 Activity 执行 onPause() 时发出一个 Intent 以及您的加号/减号代码。 BroadcastReceiver 将能够再次执行您的应用程序...

关于android - Android应用程序后台的简单检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506959/

相关文章:

android - 罗德 : Error! !!错误的 Android API 版本

Android:有什么办法可以监听传出的短信吗?

android - BroadcastReceiver 和 intent-filter?

android - 如何在android中以编程方式显示联系人列表?

android - setEnabled(),setClickable() 不工作

android - Android中的前台到底是什么?

java - 应用程序因 java.lang.NumberFormatException : Invalid int 失败

android - 在 Maven 中心上传库

android - RecyclerView 适配器显示错误的图像

android - Android 增强现实应用程序的图像识别