Android 성능 최적화 카드 최적화
2881 단어 안 드 로 이 드 지식 포인트Android 성능 최적화
앱 은 주로 사용자 가 앱 을 사용 할 때 감지 하 는 것 으로 앱 페이지 의 새로 고침,미 끄 러 질 때의 유창 도 에 나타난다.예 를 들 어 사용자 가 특정한 페이지 에서 미 끄 러 질 때 뚜렷하게 걸 리 는 현상 이 바로 멈 추 는 것 이다.개발 에 있어 16ms 원칙 이 있 습 니 다.즉,당신 의 앱 이 16ms 내 에 인터페이스 를 업데이트 하지 않 으 면 사용 자 는 멈 추 는 느낌 을 받 을 수 있 습 니 다.
2.어떤 원인 이 카드 를 만 들 었 습 니까?
1.UI 로 인 한 정지
(1)너무 복잡 한 배치
(2)과도 하 게 그리 기
(3)애니메이션
2.메 인 스 레 드 가 시간 소모 작업 을 실 행 했 습 니 다.
3.잦 은 GC
3.어떻게 카드 를 최적화 합 니까?
1.UI 카드 최적화
(1)레이아웃 최적화
a.같은 등급 의 실현 가능 한 페이지 는 RelativeLayout 대신 LineraLayout 를 사용 합 니 다.원본 코드 에서 알 수 있 기 때 문 입 니 다.
Linera Layout 는 weight 속성 을 설정 하지 않 았 을 때 onMeasure()는 한 번 만 실행 하고 RelativeLayout 는 두 번 씩 실행 합 니 다.
b.복잡 한 등급 의 구 조 는 ConstraintLayout 를 사용 하여 등급 을 줄 일 수 있 습 니 다.ConstraintLayout 는 매우 강력 한 레이아웃 컨트롤 로 상대 적 으로 많 습 니 다. 잡다 한 레이아웃 은 Constraint Layout 를 한 단계 씩 사용 하면 기능 을 실현 할 수 있 습 니 다.
c.merge 탭 사용 하기:
merge 와 include 를 결합 하여 사용 하면 레이아웃 등급 을 줄 일 수 있 습 니 다.예 를 들 어 include 의 레이아웃 파일 에서:
여기 서 우 리 는 LinearLayout 대신 merge 를 사용 할 수 있 습 니 다.그러면 LinearLayout 라 는 등급 을 줄 이 는 것 과 같 습 니 다.
d.ViewStub 탭 사용 하기:
ViewStub 는 크기 가 0 이 고 기본적으로 보이 지 않 는 컨트롤 입 니 다.View.Visible 로 설정 하거나 inflate()를 호출 한 후에 야 레이아웃 자원 을 채 울 수 있 습 니 다.즉,자원 을 적 게 차지 한 다 는 것 입 니 다.따라서 특정한 조건 에서 표시 해 야 할 레이아웃 이 있 을 때 ViewStub 로 레이아웃 의 로드 를 줄 일 수 있 습 니 다.예 를 들 어 우리 가 가장 자주 사용 하 는 공백 페이지(즉,네트워크 이상 시의 오류 알림 페이지)입 니 다.
e.도구 Hierarchy Viewer 를 사용 하여 레이아웃 을 분석 하고 최적화 할 수 있 는 곳 을 찾 습 니 다.
(2)과도 한 그리 기 최적화
a.overdraw 검 측,설정->개발 자 옵션->디버그 GPU 과도 그리 기->GPU 과도 그리 기 표시,
다른 색 을 통 해 어떤 부분 이 지나치게 그 려 졌 는 지 알 수 있 습 니 다.
b.불필요 한 background 를 제거 합 니 다.예 를 들 어 전체 페이지 의 배경 에 흰색 이 설정 되 어 있 습 니 다.이런 컨트롤 이 흰색 이 라면 배경 색 을 설정 할 필요 가 없습니다.
c.사용자 정의 view 에 대해 중복 계산 과 그리 기 를 줄 여야 합 니 다.
(3)애니메이션 최적화
a.일부 멋 진 애니메이션 은 성능 에 대한 요구 가 비교적 높 기 때문에 등급 을 나 누 는 방식 으로 핸드폰 의 유형 을 판단 하고 저급 핸드폰 으로 애니메이션 을 줄 일 수 있다.
2.메 인 라인 소요 시간 조작 최적화
(1)메 인 스 레 드 는 UI 스 레 드 라 고도 하 는데 주요 임 무 는 사용자 의 상호작용,화면 그리 기,데이터 표시,메시지 처리 등 을 처리 하 는 것 이다.만약 에 네트워크 데이터 요청,데이터 베이스 조작,파일 읽 기 등 시간 이 걸 리 면 메 인 스 레 드 에 놓 을 수 없고 하위 스 레 드 를 열 어 조작 할 수 있다.
(2)단독 적 으로 하위 스 레 드 를 만 드 는 대신 스 레 드 풀 을 사용 합 니 다.스 레 드 를 자주 만 들 고 없 애 는 데 시간 이 오래 걸 리 기 때문에 너무 많은 하위 스 레 드 를 만 드 는 것 도 메 인 스 레 드 의 CPU 를 선점 하여 사용 할 수 있 습 니 다.
3.잦 은 GC 최적화
(1)문자열 을 자주 다 룰 때 StringBuilder 사용 。
(2)뉴 대상 일 때 는 가 급 적 잦 은 실행 이 필요 한 곳 에서 뉴 대상 이 되 지 않도록 주의해 야 한다.