首页 > 解决方案 > 在 MainActivity 启动后调用应用内消息的特定活动,而不是在 SplashActivity 中

问题描述

我有一个服务来处理传入的应用内消息。该应用程序有一个 SplashActivity、MainActivity 和第二个 Activity,该 Activity 被调用以显示来自服务的此应用内消息。如果 mainActivity 需要更长的时间才能启动,则应用内将显示在 SplashActivity 中。如何确保仅在向用户显示 MainActivity 后才调用应用内消息活动(由服务启动)。

我在 SplashActivity中的 Firebase In-App Messaging 中看到了类似的问题。如何在 MainActivity 中显示它?,但我有自己的应用内消息处理实现。

标签: androidin-appandroid-inapp-purchase

解决方案


如何确保仅在向用户显示 MainActivity 后才调用应用内消息活动(由服务启动)。

您应该等待您的活动视图布局然后显示您的消息,为此您可以添加一个全局布局侦听器来查看您的活动视图之一的树观察器:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        View view = findViewById(R.id.some_view_id);

        view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                // Display your in-app message here
            }
        }
    }
}

推荐阅读