gpt4 book ai didi

android - 测试 Activity 是否已使用 FLAG_ACTIVITY_CLEAR_TOP 启动

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:30 24 4
gpt4 key购买 nike

Robolectric 允许使用 shadowOf(activity).peekNextStartedActivity() 测试 Activity 是否已启动。但是,如果 ActivityFLAG_ACTIVITY_CLEAR_TOP 启动,则此方法似乎不起作用。这是直观的,因为此标志的目的不是启动新的 Activity,而是将后台堆栈中的现有 Activity 移到前台。有什么方法可以测试这种情况吗?

更新

我的测试场景如下:

涉及3个Activity,我们称它们为A,B和C。被测Activity是B,它是由A启动的。B现在启动C获取结果,当收到结果时使用FLAG_ACTIVITY_CLEAR_TOP 标志。即使那时堆栈中没有 Activity A,我仍希望它能够启动并通过 peekNextStartedActivity() 可用。

最佳答案

每当你从 Activity 发送一个 Intent (例如),你可以使用设置标志的方法:

Intent i = new Intent(MyActivity.this, SomeActivity.class);
i.setFlags(FLAG_ACTIVITY_CLEAR_TOP | SOME_OTHER_FLAGS...);
startActivity(i);

在结果 Activity (示例中的 SomeActivity)上,您可以使用 getIntent 方法:

getIntent().getFlags()

所以真正的问题是:如何将标志拆分回它们的基本组件(按位或)

基于这篇文章:http://code.tutsplus.com/articles/understanding-bitwise-operators--active-11301

简单地用你需要的组件检查标志

if ((getIntent().getFlags() & FLAG_ACTIVITY_CLEAR_TOP) != 0)
{
// do something here
}

关于android - 测试 Activity 是否已使用 FLAG_ACTIVITY_CLEAR_TOP 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com