etc./StackOverFlow

Android에서 '컨텍스트'란 무엇입니까?

청렴결백한 만능 재주꾼 2021. 11. 30. 23:59
반응형

질문자 :Brigadier


Android 프로그래밍에서 Context 클래스는 정확히 무엇이며 무엇에 사용됩니까?

개발자 사이트 에서 그것에 대해 읽었지만 명확하게 이해할 수 없습니다.



간단히 말해서:

이름에서 알 수 있듯이 애플리케이션/객체의 현재 상태에 대한 컨텍스트입니다. 새로 생성된 개체가 무슨 일이 일어나고 있는지 이해할 수 있도록 합니다. 일반적으로 프로그램의 다른 부분(활동 및 패키지/응용 프로그램)에 대한 정보를 얻기 위해 호출합니다.

getApplicationContext() , getContext() , getBaseContext() 또는 this (Application, Activity, Service 및 IntentService 클래스와 같이 Context 에서 확장되는 클래스에 있는 경우)를 호출하여 컨텍스트를 가져올 수 있습니다.

컨텍스트의 일반적인 사용:

  • 새 개체 만들기: 새 보기, 어댑터, 수신기 만들기:

     TextView tv = new TextView(getContext()); ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
  • 표준 공통 리소스 액세스 : LAYOUT_INFLATER_SERVICE, SharedPreferences와 같은 서비스:

     context.getSystemService(LAYOUT_INFLATER_SERVICE) getApplicationContext().getSharedPreferences(*name*, *mode*);
  • 암시적으로 컴포넌트 접근 : 콘텐츠 제공자, 방송, 인텐트 관련

     getApplicationContext().getContentResolver().query(uri, ...);

Sameer Segal

컨텍스트의 정의

  • 컨텍스트는 환경 데이터를 나타냅니다.
  • 데이터베이스와 같은 것에 대한 액세스를 제공합니다.

더 간단한 용어(예제 1)

  • Person-X가 신생 소프트웨어 회사의 CEO라고 생각해 보십시오.

  • 회사에 수석 설계자가 있으며 이 수석 설계자는 데이터베이스, UI 등과 관련된 회사의 모든 작업을 수행합니다.

  • 이제 CEO는 새로운 개발자를 고용합니다.

  • 신입사원의 능력을 바탕으로 신입사원의 책임을 데이터베이스나 UI 등으로 결정하는 것은 아키텍트다.

더 간단한 용어(예제 2)

  • 앱 리소스에 대한 Android 활동에 대한 액세스와 같습니다.

  • 마치 호텔을 방문할 때 아침, 점심, 저녁을 적절한 타이밍에 원하는 것과 같죠?

  • 머무는 동안 좋아하는 다른 것들이 많이 있습니다. 어떻게 이것들을 얻습니까?

  • 룸 서비스 직원에게 이러한 것들을 가져오라고 요청합니다.

  • 여기에서 룸 서비스 직원은 귀하가 단일 활동이고 호텔이 귀하의 앱이 될 것이라는 점을 고려한 컨텍스트이며, 마지막으로 아침, 점심 및 저녁 식사가 리소스여야 합니다.


컨텍스트와 관련된 사항은 다음과 같습니다.

  1. 리소스를 로드 중입니다.
  2. 새로운 활동을 시작합니다.
  3. 보기 만들기.
  4. 시스템 서비스를 받고 있습니다.

Context는 Activity , Service , Application 등의 기본 클래스입니다.

이것을 설명하는 또 다른 방법: 컨텍스트를 TV의 원격으로 고려하고 TV의 채널은 리소스, 서비스, 인텐트 사용 등입니다.

  • 따라서 Remote는 리소스, 서비스, 인텐트 사용 등과 같은 채널에 액세스할 수 있습니다.

  • 마찬가지로 ... 원격에 액세스할 수 있는 사람은 자연스럽게 리소스, 서비스, 인텐트 사용 등과 같은 모든 것에 액세스할 수 있습니다.


컨텍스트를 얻을 수 있는 다양한 방법

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • 또는 this (활동 클래스에 있을 때)

예시:

 TextView tv = new TextView(this);

this 키워드는 현재 활동의 컨텍스트를 나타냅니다.


Devrath

원천


Android의 컨텍스트 주제는 많은 사람들에게 혼동을 주는 것 같습니다. 사람들은 Android에서 기본적인 작업을 수행하기 위해 Context가 꽤 자주 필요하다는 것을 알고 있습니다. 사람들은 컨텍스트가 필요한 작업을 수행하려고 하고 올바른 컨텍스트를 "가져오는" 방법을 모르기 때문에 때때로 당황합니다. 나는 Android에서 Context의 개념을 이해하기 위해 노력할 것입니다. 이 문제에 대한 완전한 처리는 이 게시물의 범위를 벗어나지만 Context가 무엇이며 어떻게 사용하는지 이해할 수 있도록 일반적인 개요를 제공하려고 합니다. 컨텍스트가 무엇인지 이해하기 위해 소스 코드를 살펴보겠습니다.

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/Context.java

컨텍스트란 정확히 무엇입니까?

글쎄, 문서 자체는 다소 간단한 설명을 제공합니다. Context 클래스는 "응용 프로그램 환경에 대한 전역 정보에 대한 인터페이스"입니다.

Context 클래스 자체는 Android OS에서 구현을 제공하는 추상 클래스로 선언됩니다. 문서는 컨텍스트가 "… 애플리케이션별 리소스 및 클래스에 대한 액세스를 허용하고 활동 시작, 브로드캐스팅 및 수신 의도 등과 같은 애플리케이션 수준 작업에 대한 호출을 허용합니다"라고 추가로 제공합니다.

이제 이름이 Context인 이유를 아주 잘 이해할 수 있습니다. 바로 그 때문입니다. 컨텍스트는 활동, 서비스 또는 기타 구성 요소에 대한 링크 또는 후크를 제공하여 이를 시스템에 연결하여 전역 응용 프로그램 환경에 액세스할 수 있도록 합니다. 즉, 컨텍스트는 "일반적으로 앱과 관련하여 나는 어디에 있으며 앱의 나머지 부분에 어떻게 액세스/통신합니까?"라는 구성 요소 질문에 대한 답변을 제공합니다. 이 모든 것이 약간 혼란스러워 보인다면 Context 클래스에 의해 노출된 메서드를 간략히 살펴보면 그 진정한 특성에 대한 몇 가지 추가 단서를 제공합니다.

다음은 이러한 방법의 무작위 샘플링입니다.

  1. getAssets()
  2. getResources()
  3. getPackageManager()
  4. getString()
  5. getSharedPrefsFile()

이 모든 방법의 공통점은 무엇입니까? 모두 컨텍스트에 대한 액세스 권한이 있는 사람이 애플리케이션 전체 리소스에 액세스할 수 있도록 합니다.

즉, 컨텍스트는 참조가 있는 구성 요소를 나머지 애플리케이션 환경에 연결합니다. 예를 들어, 자산(프로젝트의 '/assets' 폴더를 생각함)은 활동, 서비스 또는 이러한 리소스에 액세스하는 방법을 알고 있는 모든 애플리케이션에서 사용할 수 있습니다. getResources() getResources().getColor() 와 같은 작업을 수행하여 당신을 colors.xml 리소스에 연결할 수 있습니다.

결론은 Context 가 시스템 리소스에 대한 액세스를 가능하게 하고 구성 요소를 "더 큰 앱"으로 연결하는 것입니다. 추상 Context Context 의 하위 클래스를 살펴보겠습니다. 가장 확실한 클래스는 Activity 클래스입니다. Activity 에서 상속 ContextThemeWrapper 에서 상속 ContextWrapper 에서 상속, Context 그 클래스가 깊은 수준에서 사물을 이해하는 보는 것이 유용하지만, 지금있는 그 자체가., 그것은 알고 충분한입니다 ContextThemeWrapperContextWrapper 거의 무엇 그들은 컨텍스트(실제 컨텍스트)를 "래핑"하고 해당 컨텍스트에 해당 기능을 위임 Context 클래스 자체의 추상 요소를 구현합니다 ContextWrapper 클래스에서 Context 의 추상 메소드 getAssets 클래스는 다음과 같이 구현됩니다.

 @Override public AssetManager getAssets() { return mBase.getAssets(); }

mBase는 단순히 특정 컨텍스트에 대한 생성자에 의한 mBase 따라서 컨텍스트가 래핑되고 ContextWrapper 는 getAssets 메소드의 구현을 해당 컨텍스트에 위임합니다. 이 모든 것이 어떻게 작동하는지 보기 위해 궁극적으로 Context Activity 클래스를 검사하는 것으로 돌아가 보겠습니다.

Activity가 무엇인지 알고 있을 것입니다. 하지만 검토하자면 기본적으로 '사용자가 할 수 있는 단일 작업입니다. 사용자가 상호 작용하는 UI를 배치할 창을 제공하는 역할을 합니다. 다른 API에 익숙한 개발자는 물론 비개발자도 이를 모국어로 "화면"으로 생각할 수 있습니다. 그것은 기술적으로 부정확하지만 우리의 목적에는 중요하지 않습니다. ActivityContext 는 어떻게 상호 작용하고 상속 관계에서 정확히 어떻게 될까요?

다시 말하지만 구체적인 예를 살펴보는 것이 도움이 됩니다. 우리는 모두 활동을 시작하는 방법을 알고 있습니다. 활동을 시작하는 "컨텍스트"가 있는 경우 startActivity(intent) 를 호출하면 됩니다. 여기서 Intent는 활동을 시작하는 컨텍스트와 시작하려는 활동을 설명합니다. 이것은 친숙한 startActivity(this, SomeOtherActivity.class) 입니다.

그리고 this 무엇입니까? this 때문에 당신의 활동 Activity 에서 클래스 상속 Context . 전체 특종은 다음과 같습니다. startActivity 를 호출하면 궁극적으로 Activity 클래스가 다음과 같이 실행됩니다.

 Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity( this, mMainThread.getApplicationThread(), mToken, this, intent, requestCode);

Instrumentation execStartActivity 를 활용합니다(실제로는 ActivityResult 라는 Instrumentation 의 내부 클래스).

이 시점에서 우리는 시스템 내부를 엿보기 시작합니다.

이것은 OS가 실제로 모든 것을 처리하는 곳입니다. 그렇다면 Instrumentation은 어떻게 Activity를 정확히 시작할까요? 음, 위의 execStartActivity this 는 활동, 즉 컨텍스트이고 execStartActivity 는 이 컨텍스트를 사용합니다.

30,000개 개요는 다음과 같습니다. Instrumentation 클래스는 작업을 수행하기 위해 모니터링하는 활동 목록을 추적합니다. 이 목록은 모든 활동을 조정하고 활동의 흐름을 관리하는 데 모든 것이 원활하게 실행되는지 확인하는 데 사용됩니다.

어떤 조정 스레드 및 프로세스 문제를 완전히 조사하지 않은 몇 가지 작업이 있습니다. 궁극적으로 ActivityResult 는 기본 작업인 ActivityManagerNative.getDefault().startActivity() 를 사용합니다. startActivity 를 호출할 때 전달한 Context 전달한 컨텍스트는 필요한 경우 "의도 해결"을 지원하는 데 사용됩니다. 의도 확인은 제공되지 않은 경우 시스템이 의도의 대상을 결정할 수 있는 프로세스입니다. (자세한 내용은 여기에서 가이드를 확인하세요.)

Context 제공하는 정보에 액세스해야 합니다. 특히, 시스템은 "인텐트 데이터의 MIME 유형을 결정"할 수 있도록 ContentResolver 에 액세스해야 합니다 startActivity 가 컨텍스트를 사용하는 방법에 대한 이 전체 내용은 약간 복잡하고 내부를 완전히 이해하지 못합니다. 내 요점은 앱에 필수적인 많은 작업을 수행하기 위해 애플리케이션 전체 리소스에 액세스해야 하는 방법을 설명하는 Context 는 이러한 리소스에 대한 액세스를 제공합니다. 더 간단한 예는 보기일 수 있습니다. 우리 모두는 RelativeLayout 이나 다른 View 클래스를 확장하여 사용자 정의 보기를 만들려면 Context 를 인수로 사용하는 생성자를 제공해야 합니다.사용자 정의 보기를 인스턴스화할 때 컨텍스트를 전달합니다.왜? 테마, 리소스 및 기타 보기 구성 세부 정보에 대한 액세스 보기 구성은 실제로 좋은 예입니다. 각 컨텍스트에는 OS 자체에 의해 설정되는 Context 디스플레이의 치수 또는 밀도와 같은 것입니다. 이 정보가 보기 등을 설정하는 데 중요한 이유를 쉽게 알 수 있습니다.

마지막으로 한 마디: 어떤 이유에서인지 Android를 처음 접하는 사람들(심지어 그다지 익숙하지 않은 사람들도 포함)은 Android와 관련하여 객체 지향 프로그래밍을 완전히 잊어버리는 것 같습니다. 어떤 이유에서인지 사람들은 Android 개발을 미리 생각한 패러다임이나 학습된 행동에 맞추려고 합니다.

Android에는 고유한 패러다임과 선입견을 버리고 문서 및 개발 가이드를 읽기만 하면 실제로 매우 일관된 특정 패턴이 있습니다. 그러나 내 진짜 요점은 "올바른 컨텍스트를 얻는 것"이 때때로 까다로울 수 있지만 사람들은 컨텍스트가 필요하고 컨텍스트가 없다고 생각하는 상황에 직면하기 때문에 부당하게 당황합니다. 다시 한 번, Java는 상속 디자인을 가진 객체 지향 언어입니다.

액티비티 자체가 컨텍스트에서 상속되기 때문에 액티비티 내부에 컨텍스트만 "가져" 있습니다. 여기에는 마법이 없습니다(다양한 매개변수를 설정하고 컨텍스트를 올바르게 "구성"하기 위해 OS가 자체적으로 수행하는 모든 작업을 제외하고). 따라서 메모리/성능 문제를 제쳐두고(예: 필요하지 않을 때 컨텍스트에 대한 참조를 유지하거나 메모리에 부정적인 영향을 미치는 방식으로 수행) 컨텍스트는 다른 객체와 마찬가지로 객체이며 전달될 수 있습니다. 모든 POJO(Plain Old Java Object)와 같습니다. 때로는 해당 컨텍스트를 검색하기 위해 영리한 작업을 수행해야 할 수도 있지만 Object 자체에서 확장되는 일반 Java 클래스는 컨텍스트에 액세스할 수 있는 방식으로 작성할 수 있습니다. 컨텍스트를 취한 다음 필요에 따라 해당 클래스에서 사용하는 공용 메서드를 노출하기만 하면 됩니다. 이것은 Context 또는 Android 내부에 대한 철저한 처리를 의도한 것은 아니지만 Context를 이해하는 데 조금이나마 도움이 되기를 바랍니다.


Sourab Sharma

컨텍스트는 시스템에 대한 핸들입니다. 리소스 해결, 데이터베이스 및 기본 설정에 대한 액세스 획득 등과 같은 서비스를 제공합니다. Android 앱에는 활동이 있습니다. 컨텍스트는 애플리케이션이 현재 실행 중인 환경에 대한 핸들과 같습니다. 활동 객체는 컨텍스트 객체를 상속합니다.

자세한 내용 은 Android Studio를 사용한 Android 개발 소개 - 자습서를 참조 하세요.


angryITguy

Context 는 응용 프로그램 환경에 대한 전역 정보에 대한 "인터페이스"입니다. Context 는 실제로 Android 시스템에서 구현을 제공 하는 추상 클래스입니다.

이를 통해 애플리케이션별 리소스 및 클래스에 대한 액세스는 물론 활동 시작, 브로드캐스트 및 수신 의도 등과 같은 애플리케이션 수준 작업에 대한 호출을 허용합니다.

다음 그림에서 클래스 계층 구조를 볼 수 있습니다. 여기서 Context 는 이 계층 구조의 루트 클래스입니다. Activity Context 의 자손이라는 점을 강조할 가치가 있습니다.

활동 다이어그램


Dmytro Danylyk

Context 정확히 무엇인가요?

Android 참조 문서에 따르면 다양한 환경 데이터를 나타내는 개체입니다. 로컬 파일, 데이터베이스, 환경과 관련된 클래스 로더, 서비스(시스템 수준 서비스 포함) 등에 대한 액세스를 제공합니다. 이 책 전체와 Android를 사용한 일상적인 코딩에서 컨텍스트가 자주 전달되는 것을 볼 수 있습니다.

" Android in Practice " 책, p. 60.

여러 Android API에는 Context 가 매개변수로 필요합니다.

다양한 Android API를 살펴보면 많은 API가 android.content.Context 객체를 매개변수로 사용한다는 것을 알 수 있습니다. 또한 Activity 또는 Service 가 일반적으로 Context 로 사용됨을 알 수 있습니다. Context 에서 확장되기 때문에 작동합니다.


s0ld13r

Android에서 context 를 이해하는 간단한 예:

모든 상사에게는 덜 중요하고 시간 소모적인 작업을 수행하기 위해 돌봐줄 조수가 있습니다. 파일이나 커피 한 잔이 필요하면 보조자가 달려갑니다. 어떤 상사는 사무실에서 무슨 일이 일어나는지 거의 몰라서 비서에게도 이것에 대해 물어봅니다. 그들은 일부 일을 스스로 수행하지만 대부분의 다른 일에는 조수의 도움이 필요합니다.

이 시나리오에서는

보스 – 안드로이드 애플리케이션입니다

어시스턴트 – 컨텍스트입니다.

파일/커피 한 잔 – 리소스입니다

액티비티, 애플리케이션 등과 같은 애플리케이션의 다른 부분에 대한 정보를 얻어야 할 때 일반적으로 컨텍스트를 호출합니다.

컨텍스트가 관련된 일부 작업(조수가 필요한 작업):

  • 공통 리소스 로드
  • 동적 보기 만들기
  • 토스트 메시지 표시
  • 런칭 활동 등

컨텍스트를 얻는 다양한 방법:

 getContext() getBaseContext() getApplicationContext() this

Parsania Hardik

Android 컨텍스트 는 애플리케이션 특정 리소스 및 클래스 및 애플리케이션 환경에 대한 정보에 대한 액세스를 허용 하는 인터페이스 (Java 의미가 아니라 일반적인 의미에서, Java에서 Context

안드로이드 앱이 웹 앱이라면 컨텍스트는 ServletContext 와 비슷할 것입니다(여기서 정확한 비교는 하지 않습니다).

활동과 서비스도 Context 를 확장하므로 앱이 실행되는 환경 정보에 액세스하는 모든 메서드를 상속합니다.


naikus

  • Context 는 환경 데이터를 가져오는 핸들을 나타냅니다.
  • Context 클래스 자체는 추상으로 선언되며 구현은 Android OS에서 제공합니다.
  • Context 는 TV의 리모컨과 같고 TV의 채널은 리소스, 서비스 등입니다. 여기에 이미지 설명 입력

그것으로 무엇을 할 수 있습니까?

  • 리소스를 로드 중입니다.
  • 새로운 활동을 시작합니다.
  • 보기 만들기.
  • 시스템 서비스를 받고 있습니다.

컨텍스트를 얻는 방법:

  • getApplicationContext()
  • getContext()
  • getBaseContext() 여기에 이미지 설명 입력 여기에 이미지 설명 입력

user4813855

그냥 초보자를 위해 거기에 넣는 것입니다.

따라서 먼저 단어 컨텍스트를 이해하십시오.

English-lib에서. 그 뜻은:

"사건, 진술 또는 아이디어의 배경을 형성하고 완전히 이해하고 평가할 수 있는 상황."

"단어나 구절의 바로 앞과 뒤에 오고 그 의미를 명확히 하는 쓰거나 말한 것의 부분."

이제 프로그래밍 세계에 대해서도 동일한 이해를 하십시오.

애플리케이션/객체의 현재 상태 컨텍스트입니다. 그것은 새로 생성된 객체가 무슨 일이 일어나고 있는지 이해할 수 있도록 합니다. 일반적으로 프로그램의 다른 부분(활동, 패키지/응용 프로그램)에 대한 정보를 얻기 위해 호출합니다.

getApplicationContext() , getContext(), getBaseContext() 또는 this (활동 클래스에 있을 때)를 호출하여 컨텍스트를 가져올 수 있습니다.

애플리케이션에서 컨텍스트를 가져오려면 다음 코드를 사용하십시오.

Android 애플리케이션 내부에 새 클래스 AppContext

 public class AppContext extends Application { private static Context context; public void onCreate(){ super.onCreate(); AppContext.context = getApplicationContext(); } public static Context getAppContext() { return AppContext.context; } }

이제 비활동 클래스에서 애플리케이션 컨텍스트를 원할 때마다 이 메소드를 호출하면 애플리케이션 컨텍스트가 생깁니다.

이 도움을 바랍니다 ;)


DPP

앱 또는 서비스가 실행되는 프로세스를 격리한 VM으로 생각하십시오. 격리된 환경은 여러 기본 시스템 정보 및 특정 허용 리소스에 액세스할 수 있습니다. 해당 서비스를 이용하려면 해당 컨텍스트가 필요합니다.


Erol

컨텍스트는 현재 개체에 대한 참조입니다. 또한 컨텍스트를 통해 애플리케이션 환경에 대한 정보에 액세스할 수 있습니다.


devdas

android.content.Context 클래스는 Android 시스템과 프로젝트의 리소스에 대한 연결을 제공합니다. 애플리케이션 환경에 대한 글로벌 정보에 대한 인터페이스입니다.

컨텍스트는 위치 서비스와 같은 Android 서비스에 대한 액세스도 제공합니다.

활동 및 서비스는 Context 클래스를 확장합니다.


Yashvir yadav

컨텍스트 는 응용 프로그램 환경에 대한 전역 정보에 대한 인터페이스입니다. Android 시스템에서 구현을 제공하는 추상 클래스입니다.

Context 는 애플리케이션별 리소스 및 클래스에 대한 액세스를 허용할 뿐만 아니라 launching activities, broadcasting and receiving intents, etc.

다음은 예입니다.

 public class MyActivity extends Activity { public void Testing() { Context actContext = this; /*returns the Activity Context since Activity extends Context.*/ Context appContext = getApplicationContext(); /*returns the context of the single, global Application object of the current process. */ Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1); Context BtnContext = BtnShowAct1.getContext(); /*returns the context of the View. */

자세한 내용은 http://developer.android.com/reference/android/content/Context.html을 방문하십시오.


IntelliJ Amiya

Context는 android.content.Context 클래스의 인스턴스이며 애플리케이션을 실행하는 Android 시스템에 대한 연결을 제공합니다. 예를 들어 컨텍스트를 통해 현재 장치 디스플레이의 크기를 확인할 수 있습니다.

또한 프로젝트 리소스에 대한 액세스를 제공합니다. 애플리케이션 환경에 대한 글로벌 정보에 대한 인터페이스입니다.

Context 클래스는 또한 시간 기반 이벤트를 트리거하는 알람 관리자와 같은 Android 서비스에 대한 액세스를 제공합니다.

활동 및 서비스는 Context 클래스를 확장합니다. 따라서 컨텍스트에 액세스하는 데 직접 사용할 수 있습니다.


chandan kumar

컨텍스트는 기본적으로 리소스 액세스 및 애플리케이션(애플리케이션 컨텍스트의 경우) 또는 활동(활동 컨텍스트의 경우) 또는 기타 환경 세부 정보를 가져오기 위한 것입니다.

메모리 누수를 방지하려면 컨텍스트 개체가 필요한 모든 구성 요소에 대해 응용 프로그램 컨텍스트를 사용해야 합니다.... 자세한 내용은 여기를 클릭하십시오.


Jaber Shabeek

컨텍스트는 애플리케이션/객체의 현재 상태에 대한 컨텍스트입니다. 다양한 환경 데이터를 나타내는 엔티티입니다. 컨텍스트는 현재 활동이 로컬 파일, 데이터베이스, 환경과 관련된 클래스 로더, 시스템 수준 서비스를 포함한 서비스 등과 같은 외부 Android 환경과 상호 작용하는 데 도움이 됩니다.

컨텍스트는 시스템에 대한 핸들입니다. 리소스 확인, 데이터베이스 및 기본 설정에 대한 액세스 획득 등과 같은 서비스를 제공합니다. Android 앱에는 활동이 있습니다. 애플리케이션이 현재 실행 중인 환경에 대한 핸들과 같습니다. 활동 개체는 Context 개체를 상속합니다.

컨텍스트를 얻을 수 있는 다른 호출 방법 1. getApplicationContext(), 2. getContext(), 3. getBaseContext() 4. 또는 this(활동 클래스에 있는 경우).


santoshpatmca

컨텍스트는 Android가 내가 어떤 활동에 참여하거나 행동해야 하는지 알 수 있음을 의미합니다.

1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show(); 이것에 사용했습니다. Context context = ActivityName.this;

2 - startActivity(new Intent(context,LoginActivity.class));

이 컨텍스트에서 다른 활동으로 가고 싶은 활동을 의미합니다. context 또는 ActivityName.this는 getContext 및 getApplicatinContext보다 빠릅니다.


Deven

Context 는 우리 대부분이 Application 이라고 부르는 것입니다. 그것은 안드로이드 시스템에 의해 만들어졌으며 애플리케이션이 할 수 있는 일만 할 수 있습니다. Tomcat에서 컨텍스트는 내가 애플리케이션이라고 부르는 것이기도 합니다.

많은 활동을 보유하는 하나의 컨텍스트가 있으며 각 활동에는 많은 보기가 있을 수 있습니다.

분명히 어떤 사람들은 이것 또는 저것 때문에 적합하지 않다고 말할 것이고 아마도 맞을 것입니다. 그러나 컨텍스트가 현재 응용 프로그램이라고 말하면 메서드 매개 변수에 입력하는 내용을 이해하는 데 도움이 됩니다.


Nicolas Zozol

간단히 말해서 Androids Context 는 걱정을 멈출 때까지 사랑하지 않을 엉망진창입니다.

Android Context 는 다음과 같습니다.

  • 신-객체.

  • Android용 개발을 시작할 때 모든 애플리케이션을 전달하고 싶지만 프로그래밍, 테스트 및 Android 자체에 조금 더 가까워지면 피하게 될 것입니다.

    • 불명확한 의존성.

    • 메모리 누수의 일반적인 원인입니다.

    • 테스트용 PITA.

  • Android 시스템에서 권한, 리소스, 기본 설정, 서비스, 브로드캐스트, 스타일을 전달하고 대화 상자를 표시하고 레이아웃을 확장하는 데 사용하는 실제 컨텍스트입니다. Context 인스턴스가 필요합니다(분명히 응용 프로그램 또는 서비스 컨텍스트에서 대화 상자를 표시할 수 없으며 응용 프로그램 및 활동 컨텍스트에서 확장된 레이아웃이 다를 수 있음).


Pavlus

보스 어시스턴트 유추

Context의 전문적인 내용을 자세히 살펴보기 전에 약간의 비유를 들어보겠습니다.

모든 보스에게는 덜 중요하고 더 많은 시간이 소요되는 일을 하는 조수 또는 누군가(심부름하는 소년)가 있습니다. 예를 들어 파일이나 커피가 필요한 경우 보조자가 실행됩니다. 보스는 백그라운드에서 무슨 일이 일어나고 있는지 알지 못하지만 파일이나 작업은 전달됩니다.

그래서 여기
보스 - 안드로이드 애플리케이션
어시스턴트 - 컨텍스트
파일 또는 커피 한 잔 - 리소스

Context 에 대한 공식 Android 개발자 사이트의 설명

컨텍스트는 애플리케이션 관련 리소스에 대한 액세스 지점입니다.

이러한 리소스 또는 작업 중 일부를 살펴보겠습니다.

  • 활동을 시작합니다.

  • 파일 시스템의 애플리케이션별 캐시 디렉토리에 대한 절대 경로를 가져옵니다.

  • 주어진 권한이 시스템에서 실행 중인 특정 프로세스 및 사용자 ID에 대해 허용되는지 여부를 결정합니다.

  • 특정 권한이 부여되었는지 확인합니다.

등등.
따라서 Android 애플리케이션이 활동을 시작하려는 경우 Context (Access Point) Context 클래스가 해당 리소스(이 경우 Intent)를 반환합니다.

다른 클래스와 마찬가지로 Context 클래스에는 필드와 메소드가 있습니다.
Context 에 대해 더 자세히 알아볼 수 있습니다. 여기에는 거의 모든 것, 사용 가능한 메서드, 필드, 메서드와 함께 필드를 사용하는 방법이 포함되어 있습니다.


Rohit Singh

android.content.Context 클래스의 인스턴스는 애플리케이션을 실행하는 Android 시스템에 대한 연결을 제공합니다. 예를 들어 컨텍스트를 통해 현재 장치 디스플레이의 크기를 확인할 수 있습니다.

또한 프로젝트 리소스에 대한 액세스를 제공합니다. 애플리케이션 환경에 대한 글로벌 정보에 대한 인터페이스입니다.

Context 클래스는 또한 시간 기반 이벤트를 트리거하는 알람 관리자와 같은 Android 서비스에 대한 액세스를 제공합니다.

활동 및 서비스는 Context 클래스를 확장합니다. 따라서 컨텍스트에 액세스하는 데 직접 사용할 수 있습니다.


Mubarak

컨텍스트는 리소스, 데이터베이스, 개인 파일 디렉토리, 환경 설정, 설정과 같은 개인 데이터 액세스를 제공하는 각 앱의 샌드박스에 대한 Android 특정 API입니다.

대부분의 privatedata는 한 애플리케이션의 모든 활동/서비스/방송 청취자에 대해 동일합니다.

Application, Activity, Service는 Context 인터페이스를 구현하므로 API 호출에 Context 매개변수가 필요한 경우 사용할 수 있습니다.


k3b

Context 를 Android의 다른 친숙한 클래스와 연결하려면 다음 구조를 염두에 두십시오.

컨텍스트 < ContextWrapper < 애플리케이션

컨텍스트 < ContextWrapper < ContextThemeWrapper < 활동

컨텍스트 < ContextWrapper < ContextThemeWrapper < 활동 < ListActivity

컨텍스트 < ContextWrapper < 서비스

컨텍스트 < ContextWrapper < 서비스 < IntentService

따라서 모든 클래스는 고유한 방식으로 컨텍스트입니다. 원하는 경우 ServiceListActivityContext로 캐스팅할 수 있습니다. 그러나 자세히 보면 일부 클래스는 테마도 상속합니다. 액티비티 또는 프래그먼트에서 테마가 뷰에 적용되기를 원하지만 예를 들어 서비스 클래스에 대해서는 신경 쓰지 않습니다.

나는 여기서 문맥의 차이를 설명한다.


lomza

Context 는 다양한 시간대의 구성 요소(또는 응용 프로그램)를 의미합니다. 오후 1시에서 2시 사이에 너무 많은 음식을 먹으면 그 시간의 컨텍스트를 사용하여 그 시간 동안 사용하는 모든 방법(또는 리소스)에 액세스합니다. 콘텐츠는 특정 시간에 대한 구성 요소(응용 프로그램)입니다. Context 는 구성 요소 또는 응용 프로그램의 기본 수명 주기에 따라 계속 변경됩니다. Activity 의 onCreate() 내부에서,

getBaseContext() Activity 의 생성자에 의해 설정(생성)된 context 를 제공합니다. getApplicationContext() -- Context 설정(생성)을 제공합니다.

참고: <application> 은 모든 Android 구성 요소를 보유합니다.

 <application> <activity> .. </activity> <service> .. </service> <receiver> .. </receiver> <provider> .. </provider> </application>

즉, getApplicationContext() 를 호출하면 전체 응용 프로그램의 공통 컨텍스트를 호출하는 것입니다.

Context 는 구성 요소의 수명 주기를 기반으로 시스템에 의해 계속 수정됩니다.


Uddhav Gautam

컨텍스트를 문자열, 색상 및 글꼴과 같은 다양한 리소스가 있는 상자로 생각하십시오. 자원이 필요하면 이 상자를 사용하십시오. 화면을 회전하면 방향이 가로로 변경되기 때문에 이 상자가 변경됩니다.


Leonid Ivankin

컨텍스트에 대한 자세한 내용은 기사를 읽으십시오. 간단히 설명하겠습니다.

컨텍스트가 무엇인지 알고 싶다면 컨텍스트가 무엇을하는지 알아야합니다 ...
예를 들어 getContext() 는 컨텍스트를 검색하는 메소드 중 하나입니다. getContext()에서 Context는 Activity 및 해당 수명 주기에 연결됩니다. 우리는 Context를 Activity 뒤에 서 있는 레이어로 상상할 수 있으며 Activity가 살아 있는 동안 지속됩니다. Activity가 죽는 순간 Context도 죽습니다. 이 메서드는 활동에 다음과 같은 기능 목록을 제공합니다.

 Load Resource Values, Layout Inflation, Start an Activity, Show a Dialog, Start a Service, Bind to a Service, Send a Broadcast, Register BroadcastReceiver.

이제 상상해보십시오.

Context는 구성 요소(Activity, Application…)와 구성 요소의 수명 주기 뒤에 있는 계층(인터페이스)으로, 응용 프로그램 환경 및 Android 프레임워크에서 지원하는 다양한 기능에 대한 액세스를 제공합니다.


Amir Ehsani

Context는 Android에서 제공하는 추상 클래스 이므로 애플리케이션 코드를 Android System과 연결하는 역할을 합니다 . Context(활동, 서비스 및 애플리케이션)에서 상속되는 클래스를 통해 앱은 운영 체제에서만 도달할 수 있는 리소스 및 기능에 액세스할 수 있는 능력을 얻습니다.

컨텍스트 자손 객체가 운영 체제에 의해 인스턴스화되면 ("의도"와 같은 OS 제어 인스턴스화 메커니즘을 통해) 운영 체제에 의해 관리되고 라이프사이클을 얻습니다.

다른 모든 경우 에 메서드 호출에서 컨텍스트를 매개변수로 전달 하면 이 메서드가 컨텍스트를 OS에 도달하고 일부 작업을 수행하거나 일부 리소스를 반환하도록 요청하기 위해 OS와의 통신 채널로 사용할 수 있습니다.

매니페스트와 함께 컨텍스트 시각화

여기에 이미지 설명 입력

작동 중인 Android 컨텍스트 및 매니페스트를 시각화하기 위해 오래된 콜센터 교환기가 훌륭한 비유입니다.

기본은 실행 중인 모든 앱의 모든 애플리케이션 구성 요소를 연결하는 모든 전선이 나오는 Android 시스템입니다.

  1. 각 "스위치보드 애플리케이션"에는 앱의 매니페스트 구성 요소 선언을 나타내는 일부 플러그홀이 포함되어 있습니다. 따라서 매니페스트 선언을 통해 Android 시스템은 이러한 플러그홀의 존재에 대해 학습하므로 인텐트를 통해 객체를 생성하여 새로운 컨텍스트 와이어를 연결할 수 있습니다.

  2. 각 와이어는 앱의 실행 가능한 구성 요소 또는 앱 자체에 연결된 Android 컨텍스트를 나타냅니다. Android 시스템과 연결되어 있기 때문에 기존의 유선을 사용하여 OS를 거쳐야 하는 모든 작업을 수행하도록 요청할 수 있습니다.

  3. 액티비티가 파괴되면 해당 와이어가 분리된다고 가정할 수 있습니다. 다른 활동(또는 다른 구성 요소)이 구성되면 새 와이어가 나타나 올바른 매니페스트 선언 플러그홀에 연결됩니다.

컨텍스트가 앱을 Android 시스템에 연결하는 방법 을 설명하는 전체 기사를 작성했습니다.


ioannisa

Context 는 현재를 의미합니다. Context 는 현재 화면에 대한 작업을 수행하는 데 사용됩니다. 전.
1. getApplicationContext()
2. getContext()

 Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();

Nikita Prajapati

Java에서 키워드는 응용 프로그램의 현재 개체 상태를 나타냅니다.
마찬가지로 대안에는 Android 개발에 Context

이것은 명시적으로 또는 암시적으로 정의될 수 있습니다.

 Context con = this; getApplicationContext(); getBaseContext(); getContext();

Gavine Joyce

출처 : http:www.stackoverflow.com/questions/3572463/what-is-context-on-android

반응형