防止畫布應用程式在 Power Apps 行動裝置應用程式上重新啟動

在 Power Apps 行動應用程式中執行畫布應用程式時,應用程式可能會重新啟動,原因如下:

  • 應用程式使用的記憶體總量太多。
  • 應用程式一次使用過多記憶體或處理。
  • 當特定應用程式使用原生控制項 (例如 新增圖片條碼掃描器) 時,或使用者將 Power Apps 行動應用程式放入背景時,應用程式已移至背景。

此記憶體和處理限制 (這在 Power Apps 行動應用程式於背景執行時尤其嚴格) 是由作業系統 (Android 或 iOS) 所強加。 如果應用程式使用的資源超過您裝置上的可用資源,將會重設應用程式。 這與您造訪大型複雜網頁時,網頁瀏覽器因消耗太多電力而暫停頁面的情形相似。

在 Android 裝置上,此應用程式重新啟動可能會看起來像當機一樣,因為系統將應用程式完全關閉,並讓使用者進入裝置的主畫面。

利用本文來了解如何防止畫布應用程式在 Power Apps Mobile 上重新啟動。

對終端使用者的預防提示

雖然最大的改善通常是由應用程式製作者做出,但這裡還是提供一些提示,終端使用者可以用來減少應用程式重新啟動的發生次數:

  • 在 Power Apps 行動應用程式的使用者設定檔頁面中,選取清除快取記以移除儲存的資料。 請注意,清除快取也會移除任何 SaveData 或應用程式快取,因此只有在使用者有資料時,才應該執行此動作。
  • 在 Android 裝置上,確保 Power Apps 行動應用程式有優先權。 請參閱裝置手冊,透過電池最佳化和應用程式睡眠等設定保持應用程式執行。
  • 關閉任何除 Power Apps 行動應用程式以外的執行中應用程式,並從裝置移除不需要的資料 (例如未使用的應用程式或影像)。
  • 雖然很麻煩,但請考慮放慢使用應用程式的速度 (在畫面導覽之間,或在拍攝相片或是儲存或載入資料後,暫停一下)。

對應用程式製作者的預防提示

應用程式製作者可以對記憶體進行最大的改善,以減少應用程式重新啟動次數。 建立應用程式時,請記得最佳化應用程式,使其可在終端使用者使用的最低規格裝置上執行,並遵循有關資源使用方式的最佳做法。

注意

應用程式重新啟動是由作業系統限制記憶體的數量與應用程式所能執行的處理所造成,因此可能需要結合以下建議的緩解措施來盡量減少應用程式重新啟動次數。 可減少的記憶體和處理量越多 (無論是總計還是一次計),應用程式重新啟動的可能性就越小。

提示

您可將行動應用程式工作階段連接至顯示器,以查看應用程式在何處進行繁重處理或佔用大量記憶體的作業。 Monitor 是一種工具,透過記錄執行應用程式時發生的所有關鍵活動,供開發人員查看應用程式的功能和運作方式。

問題回報 根本原因 緩解措施
機應用程式在載入特定畫面時重新啟動。 如果特定畫面一次執行過多公式,則應用程式可能會有太多的處理,並由作業系統重新啟動。 限制畫面上的控制項數目,以及載入畫面時執行的公式數目,這可能需要分割畫面。

避免畫面之間的控制項相依性。

防止使用者在處理高峰時刻執行動作。 例如,載入包含多個篩選和查詢的大型資源庫時。

考慮使用具名公式。

考慮使用延遲載入應用程式設定。
應用程式在多次畫面導覽後重新啟動。 畫面中發生記憶體流失,導致記憶體使用量隨著使用者在應用程式中巡覽時累增。 開啟將最近瀏覽過的畫面保留在記憶體中應用程式設定。 雖然這樣會短期因保留畫面於記憶體而增加記憶體總使用量,但可在多個畫面導覽間避免記憶體流失。
應用程式在執行 SaveData/LoadData,或使用資料連接時重新啟動。 SaveData 和資料連接都會增加應用程式使用的記憶體總量。 SaveData也是處理繁重的作業。 將大量資料引入應用程式並儲存這些資料供離線使用 (尤其是媒體內容和檔案),可能會讓應用程式超出已配置的記憶體,導致作業系統重新啟動應用程式。 最佳化透過資料連接引入應用程式以及透過 SaveData 儲存的資料。

在可能的情況下,減少 SaveData 呼叫次數。

開啟明確資料行選取應用程式設定以及關閉記錄範圍一對多和多對多關聯應用程式設定,也有助於減少引入應用程式中的資料。
應用程式在使用相機控制項時重新啟動。 相機控制項會將擷取的影像儲存至記憶體。 這可能增加應用程式的記憶體使用量,尤其是在使用 OnStream 屬性將擷取的影像儲存至變數或 SaveData 時。 不要儲存最近所擷取影像以外的任何影像。

當使用者點選相機時,請使用相片來擷取影像,而不使用串流

如果您需要使用串流,請盡可能提高 StreamRate 屬性的設定值,以減少更新次數。
應用程式在使用新增圖片控制項時重新啟動。 新增圖片控制項會將選取的媒體內容儲存至記憶體。 這可能會因媒體內容的大小而產生巨大的記憶體壓力。 考慮變更擷取媒體內容的位置。

考慮關閉 UseMobileCamera 屬性,讓使用者只能選取資源庫/照片圖庫中的媒體。

考慮使用附件控制項 (做為表單的一部分) 來選取檔案,而不是使用相機來擷取。

請考慮切換至相機控制項。
應用程式在使用原生控制項,例如新增圖片條碼掃描器/讀取器以 MR 查看觀測相機及其他。 原生控制項可能會將應用程式放入背景,在重新啟動應用程式之前,作業系統對記憶體有更嚴格的限制。 使用這些控制項之前,先確定所有記憶體及處理密集型作業都已完成。 例如,停用新增圖片控制項,直到所有的 SaveData 作業都已完成為止。

考慮改用其他控制項 (例如 相機),而不使用新增圖片
應用程式重新啟動發生在一部分裝置中。 裝置有不同數量的可用記憶體和處理。 例如,較舊的裝置由於可用處理能力較低,因此更容易重新啟動應用程式。

讓其他應用程式執行,也可能會減少可用的處理量。 同樣地,安裝的其他應用程式以及儲存至裝置的大量相片/媒體可能會佔用記憶體,並減少應用程式可用的資源。
請您的使用者參考前面在對終端使用者的預防提示一節中列出的提示。

考慮投資於符合應用程式效能需求的裝置。
應用程式重新啟動的情況仍繼續發生。 記憶體使用量受到畫布應用程式的撰寫方式影響。 確定應用程式已遵循最佳做法,有助於確保效能、減少記憶體使用量和處理。 遵循下列最佳做法,以將應用程式最佳化。

建置高效能應用程式的最佳做法