簡體   English   中英

onResume 顯示透明活動時調用后台活動

[英]onResume called for background activity when showing transparent activity

我有要求調用自Activity-A的一個的onResume API及其響應用於阻止用戶如果需要,通過顯示上的活動-A的頂部的活性-B使用的應用程序的要求。

另一個要求是,在活動-B的UI中間的幾條消息,並有活動-B透明的屏幕的其余部分。 這些消息向用戶顯示他們被阻止的原因,並將他們重定向到一個 URL 以解除阻止。

當用戶從重定向的 URL 返回時,會從Activity-B 的onResume調用相同的 API 來檢查當前狀態。

現在的問題是,每當顯示Activity-B時將應用程序從后台帶回前台,也會調用Activity-A 的onResume ,這會導致雙重 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的manifest中設置這個主題

活動-B

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

這將完成Activity-B ,下次用戶返回應用程序時, Activity-A將像平常一樣處理 api 調用,並在必要時重新創建Activity-B

雖然我不知道您的具體用例,但您可以只擁有一個與屏幕大小相同的GONE覆蓋層。 當用戶不應該使用該應用程序時,覆蓋層將設置為VISIBLE 所有操作都由覆蓋而不是它下面的視圖使用,有效地將用戶鎖定在外面,您將避免整個額外的活動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM