android - 如何发现 Android 应用程序中前台的 Activity?

标签 android android-activity android-lifecycle

我需要实现逻辑 - 如果用户正在进行聊天 Activity ,那么我不需要显示带有新消息的推送通知。所以我需要知道屏幕上有什么 Activity 。为此,我找到了这个答案 How to get current foreground activity context in android?但是我不懂怎么用

public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks callback)

谁能给我一个完整的例子,说明如何发现屏幕上有什么 Activity ?

最佳答案

您必须实现 onActivityPausedonActivityResumed()

    public class YourApplication extends Application implements
    Application.ActivityLifecycleCallbacks {

    public static boolean isChatVisible=false;   

    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(this);
    }

    @Override
    public void onActivityCreated(Activity p0, Bundle p1) {

    }

    @Override
    public void onActivityStarted(Activity p0) {

    }

    @Override
    public void onActivityResumed(Activity p0) {

         isChatVisible=p0 instanceof ChatActivity;
    }

    @Override
    public void onActivityPaused(Activity p0) {

    }

    @Override
    public void onActivityStopped(Activity p0) {

    }

}

在构建通知之前,只需检查 YourApplication.isChatVisible()

关于android - 如何发现 Android 应用程序中前台的 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57676159/

相关文章:

android - Eclipse-创建新 Activity

java - onCreateDialog 上的 "Overrides deprecated method"

android - 静态 Activity 生成器?

android - 在消费应用程序中定义 Activity 时从 Android 库启动 Activity

android - 使用 XML 填充 SQLite 并集成到 Activity 内部

java - Android Fragment生命周期问题

android - 使用 onStop 进行解绑服务

java - 检查当前是否显示锁屏

android - android有多少种context,用什么比较好

android - 如何在 Android marshmallow 中禁用自动打开强制门户?