簡體   English   中英

為什么新的活動會在ChromeOS上創建新的Windows? 如何將它們限制在一個窗口中?

[英]Why do new Activities create new Windows on ChromeOS? How to constrain them to just one window?

問題

我有一個簡單的Android應用,其中包含3個活動:Login,Browse_Catalog和View_Item。 在ChromeOS上,我希望“活動”可以堆疊在一個窗口中。 相反,每個活動都顯示在ChromeOS上自己的獨立管理窗口中。 為什么會這樣呢? 我該如何停止這種行為?

請求

我希望有一些配置細節可以將活動堆疊在一個窗口中。 我嘗試在啟動活動的Intent中尋找某個標志,或者在Manifest中尋找某個設置,但是沒有發現任何表明此行為是故意的或有辦法禁用它的方法。

技術細節

ChromeOS 76.0.3809.102 (Official Build)(64-bit)
Asus Chromebox 
Android Studio 3.4.2
targetSdkVersion: 28
minSdkVersion: 25
jvmTarget: 1.8

觀察結果

  1. 據我所知,沒有錯誤消息。 帶有多個窗口的糟糕用戶體驗導致用戶認為正在運行三個單獨的程序。

  2. 應該隱藏在Backstack上的Activity並沒有很好的響應,windowmanager允許在重新確定活動的z順序之前短暫調整它們的大小。

  3. windowmanager確實允許我從后退堆棧中關閉“活動” /窗口(例如,在“查看項目”時瀏覽目錄),但是從頂部退出卻無濟於事。

可能的解決方法不令人滿意

我可以通過在全屏模式下啟動“活動”來解決此問題,但這似乎是一個巨大的麻煩。 它不會阻止用戶最小化或調整單個窗口的大小。

也許我可以將其作為具有多個片段的單個活動來完成,但除非絕對必要,否則我不想投入太多工作。

對於后代:我的錯誤是Browse_Catalog活動在清單中有一行

<activity ...
     android:launchMode="singleInstance"
    />

這會將活動創建為單個“任務”,並且不會在該任務中啟動任何其他活動。 這是一個包含有關活動,任務和BackStack的更多詳細信息的頁面

我期望的是默認行為(aka android:launchMode="standard" ),因此刪除此虛假設置可以解決此問題。

暫無
暫無

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

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