Andorid 메모리 최적화 - 코드
코드 최적화
1. 화면 이 보이 지 않 을 때 메모리 사용
사용자 가 다른 프로그램 을 열 었 을 때, 우리 의 프로그램 인터페이스 가 더 이상 보이 지 않 을 때, 우 리 는 인터페이스 와 관련 된 모든 자원 을 방출 해 야 한다.이런 장면 에서 자원 을 방출 하면 시스템 캐 시 백 엔 드 프로 세 스 의 능력 을 현저히 증가 시 킬 수 있 기 때문에 사용자 체험 도 더욱 좋아 질 것 이다.
그러면 우 리 는 어떻게 해야만 프로그램 인터페이스 가 이미 보이 지 않 는 지 알 수 있 습 니까?사실 간단 합 니 다. Activity 에서 onTrimMemory () 방법 을 다시 쓰 고 이 방법 에서 TRIM 을 감청 하면 됩 니 다.MEMORY_UI_HIDDEN 이라는 단 계 는 일단 터치 한 후에 사용자 가 우리 의 프로그램 을 떠 났 다 는 것 을 설명 합 니 다. 그러면 이때 자원 방출 작업 을 할 수 있 습 니 다. 다음 과 같 습 니 다.
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
switch (level) {
case TRIM_MEMORY_UI_HIDDEN:
break;
}
}
TRIM_MEMORY_RUNNING_MODERATE 프로그램 이 정상적으로 실행 되 고 죽 임 을 당 하지 않 는 다 는 뜻 이다.하지만 현재 휴대 전화의 메모리 가 좀 낮 아 져 서 시스템 이 LRU 캐 시 규칙 에 따라 프로 세 스 를 죽 이기 시작 할 수도 있 습 니 다.
TRIM_MEMORY_RUNNING_LOW
프로그램 이 정상적으로 실행 되 고 죽 임 을 당 하지 않 는 다 는 뜻 이다.그러나 현재 휴대 전화의 메모리 가 매우 낮 기 때문에 우 리 는 불필요 한 자원 을 방출 하여 시스템 의 성능 을 향상 시 키 는 동시에 이것 도 우리 응용 프로그램의 성능 에 직접적인 영향 을 줄 것 이다.
TRIM_MEMORY_RUNNING_CRITICAL
프로그램 이 여전히 정상적으로 실행 되 고 있 음 을 표시 하지만 시스템 은 LRU 캐 시 규칙 에 따라 대부분의 캐 시 프로 세 스 를 죽 였 습 니 다.이 럴 때 우 리 는 가능 한 한 불필요 한 자원 을 방출 해 야 한다. 그렇지 않 으 면 시스템 은 모든 캐 시 에 있 는 프로 세 스 를 계속 죽 이 고 실행 해 야 할 프로 세 스 를 죽 일 수 있다. 예 를 들 어 배경 에서 실행 되 는 서비스 등 이다.
이상 은 우리 프로그램 이 실행 중 일 때의 리 셋 입 니 다. 만약 우리 프로그램 이 현재 캐 시 되 어 있다 면 다음 과 같은 몇 가지 유형의 리 셋 을 받 을 수 있 습 니 다.
TRIM_MEMORY_BACKGROUND
휴대 전화의 현재 메모리 가 매우 낮 다 는 뜻 으로 시스템 은 LRU 캐 시 에 따라 프로 세 스 를 정리 할 준 비 를 하고 있다.이 럴 때 우리 프로그램 은 LRU 캐 시 목록 의 가장 가 까 운 위치 에 있 습 니 다. 삭제 되 지 는 않 을 것 입 니 다. 그러나 이 때 복구 하기 쉬 운 자원 을 방출 하면 핸드폰 의 메모 리 를 충분 하 게 만 들 고 우리 프로그램 을 캐 시 에 오래 보관 할 수 있 습 니 다. 그러면 사용자 가 우리 프로그램 으로 돌아 갈 때 매우 원활 하 게 느 낄 수 있 습 니 다.재가 동 과정 을 겪 은 것 이 아니 라
TRIM_MEMORY_MODERATE
핸드폰 의 현재 메모리 가 매우 낮 고 우리 의 프로그램 이 LRU 캐 시 목록 의 중간 위치 에 있다 는 것 을 나타 낸다. 만약 에 핸드폰 메모리 가 더 이상 방출 되 지 않 으 면 우리 의 프로그램 은 시스템 에 의 해 죽 을 위험 이 있다.
TRIM_MEMORY_COMPLETE
핸드폰 의 현재 메모리 가 매우 낮 고 우리 의 프로그램 이 LRU 캐 시 목록 의 가장 가장자리 에 있 음 을 나타 낸다. 시스템 은 우리 의 프로그램 을 죽 이 는 것 을 가장 우선적으로 고려 할 것 이다. 이 럴 때 가능 한 한 풀 수 있 는 모든 것 을 풀 어야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.