에 팽창되어V24의 AsyncLayoutInflater는 UI 스레드
"안드로이드 지원 라이브러리의 최근 출시와 함께, 개정 24 구글 개발자가 V4 라이브러리로 레이아웃의 비동기 인플레이션에 대한 새로운 헬퍼 클래스를 구운"이것은 내 코드입니다 :
Timber.e("Timeinflationstarts");
AsyncLayoutInflater asyncLayoutInflater=newAsyncLayoutInflater(this.getContext());
asyncLayoutInflater.inflate(R.layout.async_calendar,mLinearLayout,
new AsyncLayoutInflater.OnInflateFinishedListener() {
@Override
public void onInflateFinished(View view, int resid, ViewGroup parent) {
parent.addView(view);
Timber.e("timeWhenInflated");
}
});
이 출력이다
07-05 20:36:22.331 18250-18250/? E/PersonalFragment: Timeinflationstarts
07-05 20:36:22.371 18250-18250/? E/PersonalFragment: timeWhenInflated
문제 async_calendar.xml에서보기 많은 시간 (0.04s 후)에 걸리는 것을 볼 수 화면에서 UI 스레드를 차단합니다!
내가보기에 지연이 0.04 이상이라는 것을 확인하기 위해보기를 더 무겁게 만들었습니다.
인플레이션은 뷰를 그릴 때의 한 걸음에 불과합니다. 측정 및 레이아웃에 얼마나 오래 걸릴까요? Measure의 경우 – ianhanniballake
~ 30ms, 레이아웃의 경우 2.5ms (계층보기에서 뷰 노드의 시간을 얻을 때). –