Android Context 원리와 사용 요약
2648 단어 정리를 기다리다
1. Context 상속 시스템
Activity, 서비스, Application은 모두 Context Wrapper에서 계승된 것이고, Context Wrapper implements Context에서 계승된 것이다.각각: Activity, Service 및 Application은 Context 인스턴스입니다.
2. Context가 언제 만들어졌는지, 어떻게 만들어졌는지 - 원본 보기
Android 응용 프로그램 창(Activity)의 컨텍스트 환경(Context) 실행 프로세스 분석
Android 커널 -- Context 객체
Android에서 Context 자세히 보기 ------당신이 모르는 Context
상기 세 편의 글은 모두 원본의 각도에서 Context가 언제 만들어졌는지 분석하지만 평소의 개발에 있어Activity와 서비스는 모두 Context에서 계승된 것임을 알아야 한다. 새로운Activity나 서비스 실례를 만들면 모두 새로운Context 실례를 만든다.
총 Context = Activity 개수 + 서비스 개수 + Application Context 1개
명령줄에서 Context 개수를 볼 수 있습니다.
adb shell dumpsys meminfo package_name
2. Context에 대한 질문
1. getBaseContext와 getapplicationContext의 차이점은?
Activity를 보유한 Context는 Context를 보유한 것과 같고, Appliaction Contex를 보유한 전역에는 이것만 있다
2. 보기의 Context는 어디에서 왔습니까?
예: new TextView(Context),
일반적으로Activity에 전송되는 것은 현재Activity나Activity입니다.getBaseContext() 를 사용하여 View를 통과합니다.getContext ()는 현재 Activity의 참조입니다.
어댑터는 getView에서 inflate 보기를 위한 Context를 구조기를 통해 전달하는 흔한 장면입니다.그러나 getView의 가장 큰 매개 변수는parentView입니다. 이것은ListView의 대상 자체입니다.parentView를 통과할 수 있습니다.getContext에서 Context 대상을 가져와 수동 전달을 줄입니다.
3. Context 오류 발생
Dialog.Builder는 Activity로 보내야 하며 Activity로 보내면 안 됩니다.getApplicationContext()
4. Context 역할, 보기 방법
리소스 액세스, 뷰 생성, 4대 컴포넌트 생성
Context란 무엇입니까?
참조 자료:
Android 소스 분석 - Context 전체 이해
Android의 Context 요약 및 사용 방법
Context 참조로 인해 3 메모리 오버플로우
1. Context로 인한 메모리 오버플로우의 원인:
Avoiding memory leaks 、 Avoiding memory leaks
Android - what's the difference between the various methods to get a Context?
이 문서는 자세히 설명되어 있으며 다음과 같이 간략하게 설명되어 있습니다.
가장 흔히 볼 수 있는 메모리 형식은 비트맵이 풀리지 않은 것이다. 그림은 보통 ImageView가 가지고 있기 때문에 ImageView도 GC에 풀리지 않는다. ImageView를 만들려면 반드시 Context가 필요하다. 이 Context는Activity이다.
Bitmap -> ImageView -> Contex(Activity)
Activity가 항상 해제되지 않으면 결국 OOM에 메모리가 부족합니다.
2. 생명주기가 긴 대상에 대해 ApplicationContext를 사용하면 다음 문서에서 사용자 정의 Application이 프로젝트 전역에서 Application Context를 쉽게 얻을 수 있는 방법을 소개합니다.
사용자 정의 Application을 사용하면 Context 대상이 필요할 때 전송되며, Context를 가지고 있으면 메모리가 넘치지 않도록 합니다.ApplicationContext 전역에는 하나의 실례만 있고, 여러 개의Activity 자체는 Context에서 계승되고, 여러 개의Context 실례이기 때문이다.
Android에서 Activity 공유 변수의 다른 방법: Application context
안드로이드의 Context 사용에 대해 이야기합시다!!!
4. Context 메모리 오버플로우 관련 자료
Android 학습 시리즈(36) - App 디버그 메모리 유출의 Context 편(상)
Android 학습 시리즈(37) - App 디버그 메모리 유출의 Context 편(하)
4. 스스로 Context 만들기
안드로이드가 다른 패키지의 Context 인스턴스를 가져와서 나쁜 짓
http://chroya.iteye.com/blog/761441