onResume在显示透明活动时为后台活动调用



我有一个要求,要求从Activity-aonResume调用API,如果需要,其响应用于阻止用户使用该应用程序,方法是在Activity-a上显示Activaty-B

另一项要求是在Activity-B的用户界面中间有一些消息,并使Activity-B屏幕的其余部分透明。这些消息向用户显示他们被阻止的原因,并将他们重定向到URL以解除阻止。

当用户从重定向的URL返回时,从Activity-B的onResume调用相同的API以检查当前状态。

现在的问题是,当Activity-B显示时,每当应用程序从后台返回前台时,也会调用Activity-AonResume,这会导致双重API调用。

我使用了以下主题样式使我的Activity-B透明:

<style name="Theme.AppCompat.Transparent.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">false</item>
</style>

然后在Activity-B的清单中设置此主题

Activity-B

public void onPause(){
finish();
super.onPause();
}

这将完成Activity-B,下次用户返回应用程序时,Activity-A将像正常情况一样处理api调用,并在必要时重新创建Activity-B

虽然我不知道你的具体用例,但你可以有一个屏幕大小的GONE覆盖。当用户不应该使用应用程序时,覆盖设置为VISIBLE。所有操作都由覆盖层消耗,而不是它下面的视图有效地将用户锁定在外,这样就可以避免整个额外的活动。

最新更新