記事ディレクトリ
アプリ使用中にANRが発生し、アプリがフリーズしたり、黒い画面が表示されたりするつらい現象です。
1. 最適化の方向性
- 方向性は目標であり、高速、安定、経済的、小型です。
- 解決すべき主な問題: スタック、不当なメモリ使用量、低品質のコード、乱雑なコード ロジック、および大きすぎるインストール パッケージ。これらは、開発プロセス中に遭遇する最も一般的な問題です。
- アイデアの分析
1、
2. 最適化の実装
1. カトンに行く
- UIのフリーズ
- 理由
```
-----主要以下两点-----
- 1、绘制任务太重,绘制一帧内容耗时太长
- 2、主线程太忙, 主线程做了太多的事情,或有耗时动作。
```
-
メインスレッドの役割: インターフェースのライフサイクル制御、システムイベント処理、メッセージ処理、インターフェースのレイアウト、インターフェースの描画、インターフェースの更新。
-
人間の目と脳の連携では、60fps を超える画像更新を認識することはできません。
-
アプリのパフォーマンス標準は 60fps の値を保証することです。これは、各フレームにかかる時間は 1000/60 = 16 ミリ秒だけであることを意味します。
-
このインターフェイスの現在の UI 処理が 16 ミリ秒を超え、次の 16 ミリ秒がかかるため、インターフェイスはスタックしてスムーズではなくなります。そのため、16 ミリ秒 * 2 がすべて同じフレームに表示されます。これが「スタック」であると考えられます。
- 道具
Hierarchy Viewer工具 \
- ソリューション
- am start -W com.nwd.can.setting/com.nwd.can.setting.ui.MainActivity
- スタートラグ
- ジャンプがスタックする
- 応答遅れ
2. 安定を保つ
問題のあるアイテム | 参考URL |
---|---|
メモリリーク、メモリオーバーフロー | 参考となる知識ポイント |
- メモリ不足
メモリ オーバーフロー: (メモリ不足) 一般的な理解は、メモリが十分ではないということです。通常、大規模なソフトウェアやゲームを実行する場合、ソフトウェアやゲームに必要なメモリがホストにインストールされているメモリの容量をはるかに超えます。これはメモリ オーバーフローと呼ばれます。
- メモリーリーク
-
メモリ リーク: (メモリ リーク) は、プログラム内で動的に割り当てられたヒープ メモリが解放されないか、何らかの理由で解放できず、その結果システム メモリが浪費され、プログラムの実行速度の低下やシステム クラッシュなどの重大な結果を引き起こすことを指します。
-
メモリ リークの蓄積による影響は非常に深刻で、メモリの量に関係なく、遅かれ早かれメモリが消費されてしまいます。
-
ケース1