gpt4 book ai didi

android - 如何在调用 onNewIntent() 时检测我的 Android Activity 是否已经在运行?

转载 作者:行者123 更新时间:2023-11-30 02:35:28 24 4
gpt4 key购买 nike

我有一个 Android Activity ,有时由用户启动,有时由服务启动。从服务启动时(通过发送由我的 Activity onNewIntent() 回调接收到的 Intent)我只想让它在已经运行时更新其屏幕,但如果它尚未运行则不开始运行。

我尝试实现此目的的安排是在​​ onResume() 期间在我的 Activity 中设置一个 bool 值,并在 onPause() 期间清除该 bool 值,但我注意到 onPause() 总是在我的 Activity 收到其 onNewIntent() 之前被调用,因此值始终为假。

对于那些不熟悉事件顺序的人来说,它如下:

startActivity(myIntent); // Called from service with Intent Extra indicating that fact

onPause(); // Overriden method for my Activity

onNewIntent(Intent myIntent); // Overriden method for my Activity

onResume(); // Overriden method for my Activity

我从周围阅读的理解是,这种行为是固定的和有意的,没有办法绕过它。我看到的一个建议是计算调用 onPause() 和 onNewIntent() 之间的时间间隔,并将其用作我的 Activity 是否在 onNewIntent() 之前立即运行的估计,但我希望这里有人可能知道更好的方法?

我实际上使用的是 Fragments 而不是普通的 Activity,但这并没有改变任何重要的东西。

谢谢,

最佳答案

如果您只想知道您的 Activity 是否已经在前台,那么将尝试此代码段:

class MyActivity extends Activity {
private boolean isLaunched;

@Override
protected void onStart() {
super.onStart();
isLaunched = true;
}

@Override
protected void onStop() {
super.onStop();
isLaunched = false;
}

@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (isLaunched) {
//todo
}
else
{
//somethin here
}
}
}

关于android - 如何在调用 onNewIntent() 时检测我的 Android Activity 是否已经在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634425/

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