Power Apps モバイル アプリでのキャンバス アプリの再起動を防止する
Power Apps モバイル アプリでキャンバス アプリを実行すると、次の理由で再起動される可能性があります:
- アプリの総メモリ使用量が多すぎる。
- アプリが一度に大量のメモリや処理を使用している。
- アプリがバックグラウンドに移動する - あなたの特定のアプリがネイティブ コントロール (画像の追加 または バーコード スキャナー など) を使用する場合、または Power Apps モバイル アプリがユーザーによってバックグラウンドに置かれる場合のいずれかです。
このメモリと処理の制限は、Power Apps モバイル アプリがバックグラウンドで実行されている場合に特に厳しく、オペレーティング システム (Android または iOS) によって課せられます。 アプリがデバイスで利用可能なリソースよりも多くのリソースを使用している場合、アプリはリセットされます。 これは、大規模で複雑な Web ページを閲覧したときに、Web ブラウザが電力を消費しすぎるためにページを一時停止するのと類似しています。
Android デバイスでは、アプリが完全に閉じられ、ユーザーがデバイスのホーム画面に移動するため、このアプリの再起動はクラッシュのように感じられる場合があります。
この記事を参考に、Power Apps モバイルでキャンバス アプリの再起動を防ぐ方法について説明します
エンド ユーザー向けの予防のヒント
通常、最大の改善はアプリ作成者によってもたらされるものですが、エンド ユーザーがアプリの再起動の発生を減らすために使用できるヒントをいくつか紹介します。
- Power Apps モバイル アプリのユーザー プロフィール ページで、キャッシュをクリアを選択して、保存したデータを削除します。 これは、キャッシュをクリアすると SaveData またはアプリのキャッシュが削除されるため、エンド ユーザーがデータを持っている場合にのみ実行する必要があることに注意してください。
- Android デバイスでは、Power Apps モバイル アプリが優先されるようにします。 デバイスのマニュアルを参照して、バッテリーの最適化やアプリのスリープ設定などの設定でアプリを実行し続けてください。
- Power Apps モバイル アプリ以外の実行中のアプリをすべて閉じ、未使用のアプリや画像などの不要なデータをデバイスから削除します。
- 面倒ですが、アプリの使用を遅くすることを検討してください。画面のナビゲーションの間、または写真を撮ったり、データを保存またはロードしたりした後は、少し一時停止してください.
アプリ作成者向けの予防のヒント
アプリの再起動を減らすためのメモリの最大の改善は、アプリ作成者が行うことができます。 アプリを作成する際には、エンドユーザーが使用する最も低いスペックのデバイスで動作するようにアプリを最適化し、リソース使用に関するベストプラクティスに従う必要があります。
注意
アプリの再起動は、オペレーティング システムがアプリが実行できるメモリと処理の量を制限することによって引き起こされるため、アプリの再起動を最小限に抑えるには、以下に提案する緩和策を組み合わせる必要がある場合があります。 メモリや処理を全体でも一度でも減らすことができれば、アプリの再起動は起こりにくくなります。
ヒント
モバイル アプリ セッションを監視に接続して、アプリが重い処理やメモリを大量に消費する操作を行っている場所を確認できます。 モニターは、アプリの実行中にアプリで発生するすべての主要なアクティビティをログに記録することで、アプリが何をどのように実行するかについて詳細なビューを作成者に提供するツールです。
問題 | 根本原因 | 軽減策 |
---|---|---|
特定の画面を読み込むとアプリが再起動します。 | 特定の画面で一度に実行される数式が多すぎる場合、アプリの処理が過剰になり、オペレーティング システムによって再起動される可能性があります。 | 画面上のコントロールの数と、画面の読み込み時に実行される数式の数を制限します。これには、画面の分割が必要になる場合があります。 画面間のコントロール依存を回避します。 処理の多い瞬間にユーザーがアクションを実行できないようにします。 たとえば、複数のフィルターとルックアップを含む大きなギャラリーが読み込まれている場合です。 名前付き式の使用を検討してください。 Delayed Load アプリ設定の使用を検討してください。 |
複数の画面ナビゲーションの後、アプリが再起動します。 | 画面上でメモリ リークが発生し、ユーザーがアプリ内を移動する際にメモリ使用量が蓄積されます。 | 最近アクセスした画面をメモリに保持する アプリ設定をオンにします。 これにより、画面がメモリに保持されるため、短期的には総メモリ使用量が増加しますが、複数の画面ナビゲーション間でメモリ リークが防止されます。 |
SaveData/LoadData を実行するか、データ接続を使用すると、アプリが再起動します。 | SaveData とデータ接続はどちらも、アプリが使用するメモリの合計を増やします。 SaveData も処理負荷の高い操作です。 アプリに大量のデータを取り込み、オフラインで使用するためにそのデータを保存すると (特にメディアコンテンツやファイル)、アプリが割り当てられたメモリを超えてしまい、オペレーティングシステムがアプリを再起動する原因となる可能性があります。 | データ接続を介してアプリに取り込み、SaveData を介して保存されるデータの量を最適化します。 可能であれば、SaveData 呼び出しの数を減らします。 明示的な列選択 アプリ設定をオンにして、レコード スコープの一対多と多対多の関係 アプリの設定も、アプリに持ち込まれるデータを減らすのに役立ちます。 |
カメラ コントロール使用時にアプリが再起動します。 | カメラ コントロールは、撮影した画像をメモリーに保存します。 特に、キャプチャした画像を変数や OnStream プロパティを使って SaveData に保存している場合、アプリのメモリ使用量が増加する可能性があります。 | 最後にキャプチャした画像以外は保存しないでください。 ユーザーがカメラをタップしたときにのみ画像をキャプチャするには、ストリーム の代わりに画像を使用します。 ストリーム を使用する必要がある場合は、StreamRate プロパティをできるだけ高く設定して、更新の回数を減らします。 |
画像の追加 コントロール使用時にアプリが再起動します。 | 画像の追加 コントロールは、選択したメディア コンテンツをメモリに保存します。 メディア コンテンツのサイズが原因で、これはかなりのメモリ不足を引き起こす可能性があります。 | メディア コンテンツがキャプチャされる場所を変更することを検討してください。 UseMobileCamera プロパティをオフにして、ユーザーがギャラリー/フォト ライブラリからのみメディアを選択できるようにすることを検討してください。 カメラを使用してファイルをキャプチャする代わりに、Attachment コントロールを (フォームの一部として) 使用してファイルのみを選択することを検討してください。 カメラ コントロールへの切り替えを検討してください。 |
画像の追加、バーコード スキャナー/Reader、MR で表示、測定カメラ などのネイティブコントロール使用時にアプリが再起動します。 | ネイティブ コントロールは、アプリを再起動する前に、オペレーティング システムのメモリ制限が厳しいバックグラウンドにアプリを配置できます。 | これらのコントロールを使用する前に、メモリと処理を集中的に使用する操作がすべて完了していることを確認してください。 たとえば、画像の追加 コントロールは、SaveData 操作が完了するまで無効にします。 画像の追加ではなく、カメラ などの別のコントロールに切り替えることを検討してください。 |
アプリの再起動は、デバイスのサブセットに対して発生します。 | デバイスによって、利用可能なメモリと処理の量が異なります。 たとえば、古いデバイスは利用可能な処理が少ないため、アプリを再起動する傾向があります。 他のアプリを実行している場合も、使用可能な処理量が減少する可能性があります。 同様に、他のアプリをインストールしたり、写真やメディアをたくさん保存していると、メモリが消費され、アプリに使用できる容量が減少します。 |
上記の エンドユーザー向け予防策 をご参照ください。 アプリの性能ニーズを満たすデバイスへの投資を検討する。 |
アプリの再起動が引き続き発生します。 | メモリ使用量は、キャンバス アプリの作成方法によって影響を受けます。 アプリがベスト プラクティスに従っていることを確認することで、パフォーマンスを確保し、メモリ使用量と処理を削減できます。 | 以下のベスト プラクティスに従ってアプリを最適化します。 |
パフォーマンスの高いアプリを構築するためのベスト プラクティス
- 大規模で複雑なアプリを構築する
- 一般的なキャンバス アプリのパフォーマンスの問題と解決策
- ヒントとベスト プラクティスを使用して、キャンバス アプリのパフォーマンスを向上させる
- Power Apps キャンバス アプリのコーディングの標準とガイドライン
- ホワイトペーパー: Power Appsキャンバス アプリのコーディング標準とガイドライン (パフォーマンスの最適化セクションをご確認ください。)