gpt4 book ai didi

android - 在待完成的 Activity 消失后,找出当前 Activity 是否最终会成为任务根

转载 作者:IT老高 更新时间:2023-10-28 22:18:54 26 4
gpt4 key购买 nike

如果FirstActivity是任务的根,它自己完成并启动SecondActivity,然后在中调用isTaskRoot() SecondActivity 将立即返回 false,因为 FirstActivity 的完成是异步发生的,因此尚未完成。等待一秒钟,然后调用 isTaskRoot() 返回 true。

public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finish();
startActivity(new Intent(this, SecondActivity.class));
}
}
public class SecondActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
protected void onResume() {
super.onResume();
((TextView)findViewById(R.id.tv1))
.setText("isTaskRoot() in onResume(): " + isTaskRoot());
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
((TextView)findViewById(R.id.tv2))
.setText("isTaskRoot() after 1s: " + isTaskRoot());
}
}, 1000);
}
}

screenshot of the result

有没有办法……

  • (最佳)找出 Activity 是否将成为任务根最终,或者,

  • (总比没有好)一旦任务处于“最终”状态,就会得到某种通知/回调,因此 isTaskRoot() 将返回“真相”?

最佳答案

我也遇到过类似的问题,我想严格控制根 Activity 的确切身份。就我而言,根只能是我自己的 Activity 之一(不是第 3 方的 Activity ),因此我可以使用以下方法:

我扩展了 Application 类,添加了对名为 currentRootActivity 的 Activity 的弱引用,并添加了同步的 getter 和 setter。

然后我在创建/销毁 Activity 时自己管理这个状态。我的用例有点特别,因为我想用另一个根替换一个根,所以我确切地知道在哪里重置我的新状态变量,但我很确定你也可以这样做。

我什至可以在我的所有 Activity 的共享基类中添加这个状态逻辑。所以这并不像听起来那么恶心:)

正如评论中提到的, Activity 方法 isFinishing 也可能派上用场。

关于android - 在待完成的 Activity 消失后,找出当前 Activity 是否最终会成为任务根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17702202/

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