Androidレイアウトの最適化:レイアウトの取得に時間がかかる
1242 ワード
レイアウトの取得に時間がかかる
一般的な方法
背景:各インタフェースのロードに時間がかかる
実装:setContentView()メソッドを上書きし、手動でポイントを埋め込む
AOP/ArtHook
(1)AOP実装,(前述の起動最適化で説明した)
使用:ActivityのsetContentView()メソッドを切り替えます.
(2)ArtHook実装、(前のメモリ最適化について説明したが、主に取得したピクチャサイズが表示コントロールと一致するかどうかを検出する)
使用:同じくActivityのsetContentView()メソッドをカットします.
任意のコントロールを取得するのに時間がかかる
使用:LayoutInflater.Factory()は、次のようになります.
一般的な方法
背景:各インタフェースのロードに時間がかかる
実装:setContentView()メソッドを上書きし、手動でポイントを埋め込む
AOP/ArtHook
(1)AOP実装,(前述の起動最適化で説明した)
使用:ActivityのsetContentView()メソッドを切り替えます.
(2)ArtHook実装、(前のメモリ最適化について説明したが、主に取得したピクチャサイズが表示コントロールと一致するかどうかを検出する)
使用:同じくActivityのsetContentView()メソッドをカットします.
任意のコントロールを取得するのに時間がかかる
使用:LayoutInflater.Factory()は、次のようになります.
LayoutInflaterCompat.setFactory2(getLayoutInflater(), new LayoutInflater.Factory2() {
@Override
public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
if (TextUtils.equals(name, "TextView")) {
// TextView
}
long time = System.currentTimeMillis();
View view = getDelegate().createView(parent, name, context, attrs);
LogUtils.i(name + " cost " + (System.currentTimeMillis() - time));
return view;
}
@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
return null;
}
});