LayoutInflater 효율 분석 및 소스 코드 추적

2036 단어 소스 코드android
LayoutInflater 효율 분석 및 소스 코드 추적
효율 분석
테스트 장치
테스트 설정: 매혹 적 인 MX4 운영 체제: Android 5.1 운영 체제 CPU 모델: 연발 과 MT 6595 메모리: 2GB
테스트 방법
Layout Inflater 를 사용 하여 3 조 의 서로 다른 복잡 도의 xml 구 조 를 분석 하고 매번 100 번 을 분석 하 며 10 번 을 테스트 하여 100 번 의 평균 운행 시간 을 구한다.단 위 는 ms 이다.
테스트 결과
|               |    Xml                |Time(ms/100)|
|---------------|-----------------------|------------|
|   (  )   |  2  4   30        |   245ms    |
|               |  3  5   36        |   378ms    |

|   (  )    |  4  19   141  |   1283ms   |
                |  5  24   148  |   1156ms   |

|   (  )    |  4  37   251  |   2503ms   |
|               |  4  40   306  |   3272ms   |

주: 깊이 는 xml 의 내장 층 차 를 말 합 니 다. 노드 수 는 xml 에서 View 의 개 수 를 말 합 니 다. 속성 개 수 는 모든 View 의 속성 총 수 를 말 합 니 다.
결론: 데이터 시트 에서 알 수 있 듯 이 100 회 분석 에 필요 한 평균 시간 은 xml 의 속성 갯 수 와 정비례 관 계 를 가진다.또한 매우 복잡 한 구조 로 해석 시간 도 30ms 정도 로 조절 할 수 있다.
2. LayoutInflater 소스 코드 추적
머리말
1. 컴 파일 기간
컴 파일 기간 에 aapt 도 구 는 xml 레이아웃 파일 을 미리 처리 합 니 다 (pre - processing). aapt 소스 코드 를 보면 XMLNode 류 는 자원 을 ResXMLtree 대상 으로 만 들 고 직렬 화 합 니 다.최종 적 으로 바 이 너 리 xml 파일 을 생 성하 여 xml 에 대한 압축 을 실현 합 니 다.포장 과정 에서 xml 등 자원 파일 에 resource. ap 이 존재 합 니 다.서류 중.
2. 실행 시 해석
해석 효율 을 높이 기 위해 서 실행 할 때 inflate 는 컴 파일 기 aapt 의 xml 에 대한 예비 처리 에 심각하게 의존 합 니 다.바 텀 은 먼저 C + + 로 ResXMLparser 류 를 실현 하여 apk 에 저 장 된 ResXMLtree 를 분석 합 니 다.그리고 XmlBlock 대상 을 자바 로 봉 하여 JNI 방법 으로 ResXMLparser 를 호출 합 니 다.XmlBlock. Parser 클래스 는 XmlResourceParser 인터페이스의 실현 입 니 다.XmlResourceParser 인 터 페 이 스 는 XmlPullParser 인터페이스 와 AttributeSet 인 터 페 이 스 를 계승 합 니 다.그 중에서 XmlPullParser 는 xml pull 방식 으로 xml 를 분석 하 는 표준 인터페이스 입 니 다.AttributeSet 은 자원 에 접근 하 는 패 키 징 인터페이스 입 니 다.LayoutInflater 는 컨 텍스트 에 따라 얻 은 XmlBlock. Parser 대상 을 사용 하여 layot 의 설명 을 가 져 오고 View 대상 을 생 성하 여 하위 View 를 부모 View 에 붙 입 니 다.
소스 코드 분석
inflate 방법
우선 첫 번 째 핵심 방법 인 inflate 관심 사 를 살 펴 보 자.
1. attachToRoot 매개 변수
이것 은 일반적으로 모두 가 주목 합 니 다. false 일 때 xml 의 rootView 는 그 속성 이 유 지 됩 니 다.다음 코드 부분 을 보십시오.

좋은 웹페이지 즐겨찾기