android - 在 MainActivity 启动后调用应用内消息的特定活动,而不是在 SplashActivity 中
问题描述
我有一个服务来处理传入的应用内消息。该应用程序有一个 SplashActivity、MainActivity 和第二个 Activity,该 Activity 被调用以显示来自服务的此应用内消息。如果 mainActivity 需要更长的时间才能启动,则应用内将显示在 SplashActivity 中。如何确保仅在向用户显示 MainActivity 后才调用应用内消息活动(由服务启动)。
我在 SplashActivity中的 Firebase In-App Messaging 中看到了类似的问题。如何在 MainActivity 中显示它?,但我有自己的应用内消息处理实现。
解决方案
如何确保仅在向用户显示 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
}
}
}
}
推荐阅读
- reactjs - 更改 react-chartjs-3 中的标签位置
- python - 我已将日期作为熊猫数据框的索引。如何搜索特定日期的行?
- c# - Wrap Function / 避免重复 coid
- python - AttributeError:“str”对象没有属性“后代”-BeautifulSoup4
- xml - 删除 xml 标记 notepad++ 但保留文本
- loops - 在 GAMS 中创建宏/循环
- python - 将项目添加到嵌套字典列表中的每个字典
- java - JAVA 不兼容的类型...“无法转换为”
- javascript - 将数组中值的频率添加到对象
- asp.net-mvc - ASP.NET MVC 中的 301 永久重定向使用 https 更改 url