全部產品
Search
文件中心

Mobile Platform as a Service:Android 常見問題

更新時間:Jul 25, 2024

本文介紹接入 Android 過程中常見的問題及相應的解決方案。

自訂 JSAPI 時,handleEvent 和 interceptEvent 有什麼區別?

解答:如果監聽容器自己處理的事件,需要將自訂 JSAPI 添加到 handleEvent 裡,並返回 true 。返回 true,表示事件將停止傳遞;返回 false,表示事件將繼續傳遞給其他外掛程式。如果監聽容器的其他事件,需要將自訂 JSAPI 添加到 interceptEvent 中。

自訂 JSAPI 時,已經添加了事件,為什麼還要在 onPrepare 裡添加一次?

解答:自訂 JSAPI 時,雖然已經在 config.setEvents("event"); 中添加了事件,但是容器的外掛程式是懶載入的,即在頁面建立的時候載入。通過外部的 config.setEvents 來注入要監聽的事件名稱,當真正有 JS 調用的時候,才會去執行個體化對應的外掛程式對象。真正執行個體化的外掛程式的事件分發用的是外掛程式內 onPrepare 的事件。所以,要確保 config.setEvents("event") 的事件和內部 onPrepare 的事件保持一致。

自訂 JSAPI 外掛程式註冊的 page、session 和 service 三者的區別是什嗎?

解答:page 對應一個 WebView。session 對應 mPaaS 應用的一個 App 對象。service 是全域的一個單例。

  • 如果註冊為 page 層級,每次建立 WebView 都會建立一個外掛程式執行個體,對應的外掛程式的 onRelease 在 WebView 銷毀時回調。

  • 如果註冊為 session 層級,每次建立一個 App 對象都會建立一個外掛程式。

  • 如果註冊為 service 層級,全域只建立一次外掛程式,在第一次開啟容器的時候建立。

驗簽是驗證離線包的來源還是做完整性校正?

解答:在離線包發布平台,如果您配置了簽名私密金鑰,平台下發的 AMR 檔案就會帶上離線包的簽名資訊(通過私密金鑰對離線包的 Hash 值加密後得到的密文)。驗簽的時候會使用在專案中預置的公開金鑰進行簽名的驗證(解密上一步的密文得到 Hash 值,本地計算離線包的 Hash,判斷兩者是否相同)。該過程保證了離線包的內容完整,也保證了離線包的來源正確。

開啟離線包 ProgressBar 無法隱藏的原因是什嗎?

解答:這種情況可能是由於資源離線失敗,頁面 fallback 到了線上模式,在 fallback 模式下面 H5 容器強制限制 ProgressBar,無法通過設定 SHOW_PROGRESS 啟動參數來隱藏頁面載入進度條(Progress Bar)。