programing

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

elecom 2023. 6. 2. 20:08
반응형

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

프로래정무엇까니입확히서에밍은 정확히 입니까?Context수업과 그것은 무엇에 사용됩니까?

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

간단히 말하면:

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

호출하면 컨텍스트를 얻을 수 있습니다.getApplicationContext(),getContext(),getBaseContext()또는this((으로부터 때)Context「응용 프로그램, 액티비티, 서비스」 「IntentService」)를 참조해 주세요.

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

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

     TextView tv = new TextView(getContext());
     ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
    
  • 표준 공통 리소스 액세스:Layout_INPLATER_SERVICE와 같은 서비스, 공유 기본 설정:

     context.getSystemService(LAYOUT_INFLATER_SERVICE)
     getApplicationContext().getSharedPreferences(*name*, *mode*);
    
  • 구성요소에 암묵적으로 접근하기: 콘텐츠 제공자, 방송, 의도에 관하여

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

컨텍스트의 정의

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

더 간단한 항(예 1)

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

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

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

  • 신규 채용자의 기술력을 바탕으로 데이터베이스나 UI 등에서 일할 것인지를 알려주는 것은 설계자입니다.

더 간단한 항(예 2)

  • 그것은 앱의 리소스에 대한 안드로이드 활동에 대한 액세스와 같습니다.

  • 호텔을 방문할 때와 비슷한데, 적당한 시간에 아침, 점심, 저녁을 원하시죠?

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

  • 당신은 룸서비스 직원에게 이것들을 가져다 달라고 요청합니다.

  • 여기서 룸 서비스 담당자는 당신이 단일 활동이고 당신의 앱이 될 호텔을 고려하는 상황입니다. 마지막으로 아침, 점심, 저녁이 자원이 되어야 합니다.


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

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

컨텍스트는 활동, 서비스, 애플리케이션 등의 기본 클래스입니다.

이를 설명하는 또 다른 방법은 다음과 같습니다.상황을 TV의 원격 채널로 간주하고 TV의 원격 채널은 리소스, 서비스, 의도 사용 등입니다. 여기서 원격은 모든 다양한 리소스에 액세스할 수 있는 액세스 역할을 합니다.

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

  • 마찬가지로...원격 액세스 권한을 가진 사람은 누구나 리소스, 서비스, 사용 의도 등과 같은 모든 것에 자연스럽게 액세스할 수 있습니다.


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

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • 또는this 때 (활동반에 있을 때)

예:

TextView tv = new TextView(this);

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

컨텍스트는 시스템에 대한 핸들로, 리소스 해결, 데이터베이스 및 환경설정에 대한 액세스 권한 획득 등의 서비스를 제공합니다.Android 앱에는 활동이 있습니다.컨텍스트는 현재 응용 프로그램이 실행 중인 환경의 핸들과 같습니다.활동 개체는 컨텍스트 개체를 상속합니다.

자세한 내용은 Android Studio를 사용한 Android 개발 소개 - 튜토리얼에서 확인하십시오.

Context는 응용 프로그램 환경에 대한 글로벌 정보에 대한 "인터페이스"입니다.실로는.Context는 실제로 Android 시스템에 의해 구현되는 추상 클래스입니다.

애플리케이션별 리소스 및 클래스에 액세스할 수 있으며, 시작 활동, 브로드캐스트 및 수신 의도 등과 같은 애플리케이션 수준 운영에 대한 업콜도 가능합니다.

다음 그림에서 클래스의 계층 구조를 볼 수 있습니다.Context이 계층의 루트 클래스입니다.특히, 강조할 가치가 있습니다.Activity는 의후니다의 입니다.Context.

활동도

ㅠㅠContext정확히?

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

"Android in Practice" 책에서 60페이지.

Android 에는 일Android API가 합니다.Context

API를, 이 다한 Android API를 알 수 .android.content.Context개체를 매개 변수로 지정합니다.또한 활동 또는 서비스가 일반적으로 다음과 같이 사용되는 것을 확인할 수 있습니다.Context이 두 클래스가 모두 다음에서 확장되기 때문에 작동합니다.Context.

을 예contextAndroid:

모든 상사는 덜 중요하고 시간이 많이 걸리는 업무를 처리할 조수가 있습니다.파일이나 커피 한 잔이 필요한 경우, 보조원이 도주 중입니다.어떤 상사들은 사무실의 상황을 거의 알지 못하기 때문에, 그들은 그들의 조수들에게도 이것에 대해 물어봅니다.그들은 몇몇 일을 스스로 하지만 대부분의 다른 일들은 그들의 조수들의 도움이 필요합니다.

이 시나리오에서는,

보스 – Android 애플리케이션입니까?

보조 도구 – 컨텍스트입니다.

파일/커피 한 잔 – 리소스

일반적으로 활동, 응용프로그램 등 응용프로그램의 다양한 부분에 대한 정보를 얻어야 할 때 컨텍스트를 호출합니다.

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

  • 공통 리소스 로드 중
  • 동적 뷰 작성
  • 토스트 메시지 표시
  • 런칭 활동 등

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

getContext()

getBaseContext()

getApplicationContext()

this

Android Context는 인터페이스입니다(일반적인 의미에서는 Java가 아닙니다; Java에서는Context는 실제로 추상 클래스입니다!). 이 클래스를 통해 응용 프로그램별 리소스 및 응용 프로그램 환경에 대한 클래스 및 정보에 액세스할 수 있습니다.

만약 당신의 안드로이드 앱이 웹 앱이라면, 당신의 상황은 비슷한 것이 될 것입니다.ServletContext(저는 여기서 정확한 비교를 하고 있지 않습니다.)

귀사의 활동과 서비스도 확장됩니다.Context따라서 앱이 실행 중인 환경 정보에 액세스할 수 있는 모든 방법을 상속합니다.

  • Context환경 데이터를 가져오는 핸들을 나타냅니다.
  • Context클래스 자체는 추상적으로 선언되며, 이 클래스의 구현은 안드로이드 OS에 의해 제공됩니다.
  • ContextTV의 원격지와 같습니다. TV의 채널은 리소스, 서비스 등입니다.여기에 이미지 설명 입력

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

  • 리소스를 로드하는 중입니다.
  • 새 활동을 시작합니다.
  • 보기를 만드는 중입니다.
  • 시스템 서비스를 받는 중입니다.

컨텍스트를 가져오는 방법:

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

신입생들을 위해 밖에 내놓기만 하면 됩니다.

먼저 워드 컨텍스트를 이해합니다.

영어 립으로.의미:

"사건, 진술 또는 아이디어에 대한 설정을 형성하는 상황과 그에 대한 측면에서 충분히 이해하고 평가할 수 있는 상황."

"어떤 단어나 구절의 바로 앞, 뒤에 있고 그 의미를 명확하게 하는 어떤 글이나 말의 부분."

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

응용 프로그램/객체의 현재 상태에 대한 컨텍스트입니다.새로 생성된 개체가 현재 진행 중인 상황을 이해할 수 있도록 합니다.일반적으로 프로그램의 다른 부분(활동, 패키지/응용 프로그램)에 대한 정보를 얻기 위해 호출합니다.

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

응용 프로그램에서 컨텍스트를 가져오려면 다음 코드를 사용합니다.

클래스 새클스만기들AppContext 앱 에 Android ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

public class AppContext extends Application {

    private static Context context;

    public void onCreate(){
        super.onCreate();
        AppContext.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return AppContext.context;
    }
}

이제 비활동 클래스에서 응용프로그램 컨텍스트를 원할 때마다 이 메서드를 호출하면 응용프로그램 컨텍스트가 생성됩니다.

이 도움을 바랍니다 ;)

컨텍스트는 현재 개체에 대한 참조입니다.또한 컨텍스트를 통해 응용프로그램 환경에 대한 정보에 액세스할 수 있습니다.

애플리케이션 또는 서비스가 실행 중인 프로세스를 사일로화한 VM이라고 생각하면 됩니다.고립된 환경에서는 수많은 기본 시스템 정보와 허용되는 특정 리소스에 액세스할 수 있습니다.이러한 서비스를 이용하려면 이러한 맥락이 필요합니다.

은 학입니다.android.content.ContextAndroid 시스템에 대한 연결 및 프로젝트의 리소스를 제공합니다.응용프로그램 환경에 대한 글로벌 정보에 대한 인터페이스입니다.

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

는 활동및확니다합장을 합니다.Context학급.

컨텍스트는 Android에서 제공하는 추상 클래스로, 응용 프로그램 코드를 Android 시스템과 연결하는 역할을 합니다.컨텍스트(활동, 서비스 및 응용프로그램)에서 상속되는 클래스를 통해 앱은 운영 체제에서만 액세스할 수 있는 리소스 및 기능에 액세스할 수 있습니다.

컨텍스트 하위 개체가 운영 체제에 의해 인스턴스화되면("의도"와 같은 OS 제어 인스턴스화 메커니즘을 통해) 운영 체제에 의해 관리되고 라이프사이클이 확보됩니다.

다른 무엇보다도, 메소드 호출에서 컨텍스트를 매개 변수로 전달하면, 이 메소드는 컨텍스트를 OS와 통신 채널로 사용하여 OS에 도달하고 OS가 작업을 수행하거나 리소스를 반환하도록 요청할 수 있습니다.

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

여기에 이미지 설명 입력

Android 컨텍스트와 매니페스토를 실행 중인 상태로 시각화하려면 오래된 콜 센터 교환기가 좋은 비유입니다.

기반은 실행 중인 모든 앱의 모든 애플리케이션 구성 요소를 연결하는 모든 와이어가 나오는 안드로이드 시스템입니다.

  1. 각 "스위치보드 응용프로그램"에는 앱의 매니페스트 구성요소 선언을 나타내는 플러그홀이 있습니다.그래서 매니페스트 선언을 통해 안드로이드 시스템은 이러한 플러그홀의 존재를 학습하여 의도를 통해 객체를 생성함으로써 새로운 컨텍스트 와이어를 연결할 수 있습니다.

  2. 각 와이어는 앱의 일부 실행 가능한 구성 요소 또는 앱 자체에 연결된 Android 컨텍스트를 나타냅니다.기존 와이어는 Android 시스템과 연결되어 있어 운영 체제를 통과해야 하는 모든 작업을 요청할 수 있습니다.

  3. 활동이 삭제되면 해당 와이어의 플러그가 뽑힌다고 가정할 수 있습니다.다른 활동(또는 다른 구성 요소)이 구성되는 동안 새 와이어가 나타나 올바른 매니페스트 선언 플러그 구멍에 연결됩니다.

는 컨텍스트가 어떻게 당신의 앱을 안드로이드 시스템에 결합하는지 설명하는 전체 기사를 썼습니다.

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

Context애플리케이션별 리소스 및 클래스에 액세스할 수 있으며 다음과 같은 애플리케이션 레벨 작업을 요청할 수 있습니다.

예는 다음과 같습니다.

 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 을 참조하십시오.

컨텍스트는 클래스 Android.content의 인스턴스입니다.컨텍스트는 응용 프로그램을 실행하는 Android 시스템에 대한 연결을 제공합니다.예를 들어 컨텍스트를 통해 현재 장치 디스플레이의 크기를 확인할 수 있습니다.

또한 프로젝트의 리소스에 액세스할 수 있습니다.응용프로그램 환경에 대한 글로벌 정보에 대한 인터페이스입니다.

Context 클래스는 Android 서비스(예: 알람 관리자)에 액세스하여 시간 기반 이벤트를 트리거할 수도 있습니다.

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

컨텍스트는 응용 프로그램/개체의 현재 상태에 대한 컨텍스트입니다.다양한 환경 데이터를 대표하는 엔티티이며, 현재 활동은 로컬 파일, 데이터베이스, 환경과 관련된 클래스 로더, 시스템 레벨 서비스 등과 같은 안드로이드 환경 외부와 상호 작용할 수 있도록 지원합니다.

컨텍스트는 시스템에 대한 핸들입니다.리소스 해결, 데이터베이스 및 환경설정에 대한 액세스 권한 획득 등의 서비스를 제공합니다.안드로이드 앱에는 활동이 있습니다.이는 현재 응용프로그램이 실행 중인 환경에 대한 핸들과 같습니다.활동 개체는 컨텍스트 개체를 상속합니다.

컨텍스트 1. getApplicationContext(), 2. getContext(), 3. getBaseContext() 4. 또는 이것(활동 클래스에 있는 경우)을 가져올 수 있는 다양한 호출 방법.

컨텍스트는 기본적으로 리소스에 액세스하고 애플리케이션(애플리케이션 컨텍스트), 활동(활동 컨텍스트) 또는 기타 모든 환경 세부 정보를 가져오는 데 사용됩니다.

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

컨텍스트는 안드로이드가 내가 어떤 활동을 해야 하는지 또는 어떤 활동을 해야 하는지 알게 된다는 것을 의미합니다.

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

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

이 맥락에서 당신이 어떤 활동에서 다른 활동으로 가고 싶은지를 의미합니다.컨텍스트 또는 활동Name.그러면 컨텍스트를 가져오고 컨텍스트에서 응용 프로그램을 가져오는 것이 더 빠릅니다.

보스 어시스턴트 유추

컨텍스트의 전문성에 대해 자세히 살펴보기 전에 약간의 비유를 들어 보겠습니다.

모든 상사에게는 덜 중요하고 시간이 많이 걸리는 일을 해주는 조수나 누군가가 있습니다.예를 들어, 파일이나 커피가 필요한 경우 보조자가 실행 중입니다.보스는 백그라운드에서 무슨 일이 일어나고 있는지 알 수 없지만 파일이나 작업이 전달됩니다.

So Here
보스 - 안드로이드 애플리케이션
- - 컨텍스트
잔 파일 - 파일 - 커피 - 커피

Android 공식 개발자 사이트에서 컨텍스트에 대해 언급한 내용

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

이러한 리소스 또는 작업에 대해 살펴보겠습니다.

  • 활동을 시작합니다.

  • 파일 시스템의 응용 프로그램별 캐시 디렉터리에 대한 절대 경로를 가져오는 중입니다.

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

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

등등.
앱으로 이동합니다. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅠContext 포인트)및 (액세스 포인트) »Context클래스는 리소스를 반환합니다(이 경우 의도).

다른 수업과 마찬가지로Context클래스에 필드와 메서드가 있습니다.
은 에대자세알수있다습니아에 대해 더 수 .Context공식 문서에서는 거의 모든 것, 사용 가능한 방법, 필드, 심지어 방법으로 필드를 사용하는 방법까지 다룹니다.

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

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

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

단순화, 안드로이드Context걱정을 멈출 때까지 사랑하지 않을 엉망진창입니다.

안드로이드Context접두사:

  • 신의 물건.

  • Android용으로 개발을 시작할 때는 모든 응용프로그램을 전달하고 싶지만 프로그래밍, 테스트 및 Android 자체에 조금 더 가까워지면 이를 수행하는 것을 피할 수 없습니다.

    • 명확하지 않은 종속성.

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

    • 테스트를 위한 PITA.

  • Android 시스템에서 권한, 리소스, 기본 설정, 서비스, 브로드캐스트, 스타일, 대화 상자 표시 및 레이아웃 부풀리기를 위해 사용하는 실제 컨텍스트입니다.그리고 당신은 다른 것이 필요합니다.Context일부 개별 항목에 대한 인스턴스(예: 응용프로그램 또는 서비스 컨텍스트에서 대화 상자를 표시할 수 없습니다. 응용프로그램 및 활동 컨텍스트에서 부풀린 레이아웃이 다를 수 있습니다.)

컨텍스트는 리소스, 데이터베이스, 개인 파일 디렉토리, 기본 설정, 설정 등과 같은 액세스 앱 개인 데이터를 제공하는 각 앱-s 샌드박스의 안드로이드 전용 API입니다.

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

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

클래스 Android.content의 인스턴스입니다.컨텍스트는 응용 프로그램을 실행하는 Android 시스템에 대한 연결을 제공합니다.예를 들어 컨텍스트를 통해 현재 장치 디스플레이의 크기를 확인할 수 있습니다.

또한 프로젝트의 리소스에 액세스할 수 있습니다.응용프로그램 환경에 대한 글로벌 정보에 대한 인터페이스입니다.

Context 클래스는 Android 서비스(예: 알람 관리자)에 액세스하여 시간 기반 이벤트를 트리거할 수도 있습니다.

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

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

컨텍스트 < 컨텍스트 래퍼 < 애플리케이션

컨텍스트 < 컨텍스트 래퍼 < 컨텍스트 테마 래퍼 < 활동

콘텍스트 < 콘텍스트 래퍼 < 콘텍스트 테마 래퍼 < 활동 < 활동 목록

컨텍스트 < 컨텍스트 래퍼 < 서비스

컨텍스트 < 컨텍스트 래퍼 < 서비스 < 인텐트 서비스

그래서, 이 모든 수업들은 그들만의 방식으로 맥락입니다.원하는 경우 서비스 및 목록 활동을 컨텍스트캐스팅할 수 있습니다.하지만 자세히 보면, 어떤 수업들은 테마도 물려받습니다.활동 또는 조각에서, 당신은 그것들을 당신의 보기에 적용하기를 원하지만, 예를 들어, 서비스 클래스에는 관심이 없습니다.

여기서 문맥의 차이를 설명하겠습니다.

Context다양한 기간의 구성 요소(또는 응용 프로그램)를 의미합니다.오후 1시에서 2시 사이에 너무 많은 음식을 먹으면 그 시간 동안 사용하는 모든 방법(또는 자원)에 액세스하는 데 사용됩니다.콘텐츠는 특정 시간에 대한 구성요소(응용프로그램)입니다.Context구성요소 또는 응용프로그램의 기본 라이프사이클에 따라 응용프로그램 구성요소가 계속 변경됩니다.를 들어, 에서, 의내부를() create(▁the() ▁on의▁for() 내부▁inside() ▁of를,() create예() )(()Activity,

getBaseContext()을 제공합니다.context의 시대의Activity활동 생성자에 의해 설정(생성)됩니다. getApplicationContext()을 제공합니다.Context응용 프로그램을 만드는 동안 설정(생성)했습니다.

참고:<application>에는 모든 Android 구성 요소가 들어 있습니다.

<application>
    <activity> .. </activity> 

    <service>  .. </service>

    <receiver> .. </receiver>

    <provider> .. </provider>
</application> 

그 말은, 당신이 전화할 때getApplicationContext()모든 구성요소 내부에서 전체 응용프로그램의 공통 컨텍스트를 호출합니다.

Context구성 요소의 수명 주기에 따라 시스템에서 계속 수정됩니다.

ㅠㅠContext정확히?

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

"Android in Practice" 책에서 60페이지.

Android 에는 일Android API가 합니다.Context

API를, 이 다한 Android API를 알 수 .android.content.Context개체를 매개 변수로 지정합니다.또한 활동 또는 서비스가 일반적으로 다음과 같이 사용되는 것을 확인할 수 있습니다.Context이 두 클래스가 모두 다음에서 확장되기 때문에 작동합니다.Context.

상황에 대한 자세한 내용은 이 기사를 참조하십시오.제가 그것을 간단히 설명하겠습니다.

문맥을 알고 싶다면 그것이 무엇을 하는지 알아야 합니다.
예를 들어 getContext()는 컨텍스트를 검색하는 메서드 중 하나입니다.getContext()에서 컨텍스트는 활동과 해당 라이프사이클에 연결됩니다.컨텍스트를 활동 뒤에 있는 계층으로 상상할 수 있으며 활동이 지속되는 동안 지속됩니다.활동이 종료되는 순간 컨텍스트도 종료됩니다.이 방법은 다음과 같은 활동에 대한 기능 목록을 제공합니다.

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

이제 상상해보세요:

컨텍스트는 구성 요소(활동, 애플리케이션…) 및 구성 요소의 수명 주기 뒤에 있는 계층(인터페이스)으로, 애플리케이션 환경 및 Android 프레임워크에서 지원하는 다양한 기능에 액세스할 수 있습니다.

https://stackoverflow.com/a/16301475/1772898 의 댓글을 보시면 ulf-edholm의 댓글을 보실 수 있습니다.

흠, 그것은 모두 우리가 예전에 글로벌 변수라고 부르던 것처럼 들립니다. 그것은 물체 방향이 장면에 들어왔을 때 많이 찌푸려졌습니다.

그는 옳다.컨텍스트는 글로벌 변수의 대안입니다.

말하자면,는 이렇게 수 : 간히말다같습음다니과하면단다같.global variable ≈ context

글로벌 변수에 비해 컨텍스트의 이점은 글로벌 변수가 동일한 프로세스에서 동일한 시스템의 두 개의 독립적인 인스턴스를 생성하는 것을 불가능하게 만드는 반면, 컨텍스트는 시스템의 여러 인스턴스를 각각 고유한 컨텍스트와 함께 단일 프로세스에서 공존할 수 있게 한다는 것입니다.

John Ousterhout의 소프트웨어 설계 철학, 7.5 패스스루 변수를 확인하십시오.

글로벌 변수는 글로벌 변수에 대한 액세스가 충돌하기 때문에 동일한 프로세스에서 동일한 시스템의 두 개의 독립 인스턴스를 만드는 것을 불가능하게 만듭니다.

...

제가 가장 자주 사용하는 솔루션은 그림 7.2(d)와 같이 컨텍스트 객체를 소개하는 것입니다.컨텍스트는 응용프로그램의 모든 전역 상태(통과 변수 또는 전역 변수)를 저장합니다.대부분의 애플리케이션에는 구성 옵션, 공유 하위 시스템 및 성능 카운터와 같은 항목을 나타내는 전역 상태의 여러 변수가 있습니다.시스템 인스턴스당 하나의 컨텍스트 개체가 있습니다.컨텍스트를 사용하면 시스템의 여러 인스턴스가 각각 고유한 컨텍스트를 가진 단일 프로세스에서 공존할 수 있습니다.

나중에 댓글 섹션에서 bjornw의 다른 댓글을 찾을 수 있습니다.

만약 당신이 단지 코드베이스를 그리면, 당신은 수백가지의 다른 getContext, baseContext, blaBlaContext를 볼 수 있을 것입니다.

그의 말도 옳습니다.

컨텍스트를 인식해야 하는 메서드의 수를 줄이기 위해 컨텍스트에 대한 참조가 많은 주요 개체에서 참조됩니다.따라서 getContext, getBaseContext, getBlaContext가 표시됩니다.여러 곳에

참조: John Ousterhout의 소프트웨어 설계 철학, 7.5 패스스루 변수.

안타깝게도 컨텍스트는 아마도 많은 곳에서 필요할 것이므로 잠재적으로 패스스루 변수가 될 수 있습니다.인식해야 하는 메서드의 수를 줄이기 위해 컨텍스트에 대한 참조를 시스템의 대부분의 주요 개체에 저장할 수 있습니다.그림 7.2(d)의 예에서 m3를 포함하는 클래스는 컨텍스트에 대한 참조를 개체의 인스턴스 변수로 저장합니다.새 개체가 생성되면 생성 메서드는 해당 개체에서 컨텍스트 참조를 검색하여 새 개체의 생성자에게 전달합니다.이 접근 방식을 사용하면 컨텍스트를 어디서나 사용할 수 있지만 생성자에서는 명시적 인수로만 표시됩니다.

컨텍스트를 문자열, 색상 및 글꼴과 같은 다양한 리소스가 있는 상자로 생각합니다.리소스가 필요한 경우 이 상자로 이동합니다.화면을 회전하면 방향이 가로로 바뀌기 때문에 이 상자가 바뀝니다.

 Context전류를 의미합니다. Context현재 화면에 대한 작업을 수행하는 데 사용합니다.전에
  는 다음과 같습니다.
  getContext()

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

언급URL : https://stackoverflow.com/questions/3572463/what-is-context-on-android

반응형