I. Androidのコーディング仕様
2.ローカル変数の命名、静的メンバ変数の命名
文字のみを含むことができ、単語の最初の文字は***を除いて大文字で、他の文字はすべて小文字です。
3.定数ネーミング
文字と_のみを含み、すべての文字を大文字にし、_で単語を区切ります。
4.idネーミングのレイアウト
命名パターンは次のようになります。ビューの省略形_モジュール名_ビューの論理名
略称の詳細は以下の通りです。
レイアウトビュー: lv
相対ビュー:rv
テキストビュー:tv
イメージ表示:iv
イメージボタン:im
ボタン:btn
5. ビュー変数名のアクティビティ
命名パターンは、論理名 + ビューの省略形です。
提案:レイアウトファイルが非常に複雑な場合、レイアウトを複数のモジュールに分割し、各モジュールでmoduleViewHolderを定義し、そのメンバ変数に属するビューを格納することをお勧めします。
6.strings.xmlにおけるidの命名
命名パターン:アクティビティ名_機能名_モジュール名_論理名/アクティビティ名_論理名/共通論理名
strings.xmlでは、アクティビティ名のアノテーションを使用して、ファイルの内容を区別します。
7.絵のネーミングで描画可能
命名パターン:アクティビティ名_ロジック名/共通ロジック名
7.styles.xml:styles.xmlに一般的なスタイルの共通コンポーネントを抽出するためにスタイルの一定の再現のレイアウト;
8.レイヤーリストとセレクタの使用
9.再利用可能な複数のイメージに分割しようとするイメージ
10.サーバー側で実現できることは、クライアント側で実現しないでください。
11.サードパーティライブラリの参照は、大容量のサードパーティライブラリの適用を避け、結果として非常に大きなクライアントパッケージにならないように注意する必要があります。
12.アプリケーションのグローバルな例外とエラーを処理し、エラーをメールの形でサーバーに送信します。
13. .9 写真の加工
14.インターフェイス間の共有に静的変数を使用することに注意してください。
15.Log(システム名 モジュール名 インターフェース名 詳細説明)
16.単体テスト
17.親クラスのハンドラーを再利用しないでください。また、対応するクラスのハンドラーを子クラスで使用しないでください。
18.すべてのロジックを処理するためのView.OnClickListenerのアクティビティ
19.strings.xml で %1$s を使用して文字列のワイルドカードを使用しています。
20.複数のアクティビティに共通のUI処理が含まれている場合、CommonActivityを絞り込むことができます。
22.汎用コンポーネントを開発する場合は、競合を避けるために、drawable/layout/menu/valuesディレクトリのファイル名に接頭辞を付けてください。
23.データは検証されなければなりません。
文字から数値への変換に失敗した場合は、デフォルト値が必要です;
サーバー側のレスポンスデータが有効かどうかを判定します;
第二に、Androidのパフォーマンスの最適化
1.IP圧縮付きhttp、接続タイムアウトと応答タイムアウトの設定
httpリクエストは、ビジネス要件に応じてキャッシュされるかキャッシュされないかに分けられ、その後、ネットワークのない環境では、まだデータの一部を閲覧キャッシュSEを介して、オフラインでの読み取りを実現しています。
2. リストビューのパフォーマンス最適化
1).convertViewの再利用
getItemViewで、convertViewがnullかどうかを判断し、nullでなければ再利用可能。couvertviewのビューがリスナーを追加する必要がある場合、コードはif(convertView==null){}の外になければなりません。
2).イメージの非同期読み込み
アイテムにウェブイメージが含まれている場合、***非同期にロードします。
3).高速スワイプ時にイメージを表示しない
リストを素早くスライドさせると、アイテム内のイメージや、リソースを消費する必要のあるビューを表示することができません。
3コアスレッドプールと通常のスレッドプールに分かれてスレッドプールを使用し、ダウンロードイメージや他の時間のかかるタスクは、通常のスレッドプールに配置され、すべての非同期タスクの結果、スレッドプールをブロックする時間のかかるタスクを避けるために、待機する必要があります
4非同期タスクは、コアタスクと通常のタスクに分かれて、システムレベルのエラーのコアタスクのみがエラーを報告する、非同期タスクのui操作は、活性化状態の元のアクティビティかどうかを判断する必要があります。
5.静的メンバ変数が、Context のような多くのリソースを消費するインスタンスを参照しないようにします。
6.StrongReferenceの代わりにWeakReferenceを使用する WeakReferenceを使用すると、オブジェクトへの参照を保持しながら、必要な場合に GCがオブジェクトを解放してメモリを取り戻すことができます。つまり、オブジェクトを保持し、アプリケーショ ンが必要なときに使用し、必要なときに GC に再要求させたい場合、弱参照の使用を検討できます。
7.スーパー・ビッグ・ファット・ビットマップ
タイムリーな破壊
サンプリングレートの設定
柔らかい引用符の巧みな使い方
Drawable はレジデントのリソースに対応し、ビットマップはその他のリソースに対応します。 Cursor が占有するメモリは、GC が処理するのを待つのではなく、タイムリーに解放されるようにします。また、Android は明らかに、プログラマが手動でカーソルを閉じることを好みます。
9.スレッドもメモリ・リークの重要な原因です。スレッドがメモリリークを発生させる主な理由は、スレッドのライフサイクルが制御できないことです。
10.ImageViewのイメージがネットワークからのものである場合、非同期ロード
11カスタムViewのアプリケーション開発は、インタラクティブな部分は、スレッドに書き込まないでください常にインターフェイスの表示をリフレッシュが、TouchListenerイベントによると積極的に更新のインターフェイスによってトリガされ
第三に、AndroidUIの最適化
1. レイアウトコンポーネント、マージとインクルードの再利用を試みます。
2.スタイルの使用、スタイル定義の再利用
3.ソフトキーボードのポップアップコントロールは、入力ボックスを覆わないようにします。
4.数字と文字と漢字の混在問題:数字と文字を全角にすること。最近は半角入力の場合が多いので、文字と数字の位置が定まりませんが、全角にすれば数字と文字の位置が漢字と同じになり、レイアウトの位置による問題を回避できます。
5.英語ドキュメントのレイアウト:単語の整合性を維持するためにtextviewの自動改行、解決策は、文字列の長さを計算し、手動で何文字を表示するように各行を設定し、'n'を追加することです!
6.RelativeLayoutを使った複雑なレイアウト
7.適応的なスクリーン、pix の代りの dp の使用
8.等分割レイアウトを作成するには、android: layout_weightまたはTableLayoutを使用します。
9.アニメーション効果を作成するためのアニメーションリストの使用