2014-06-23 3 views
0

토스트 용으로 the android documentation 이상을 읽었으며 예제 코드가 getActivity() 또는 this이 아닌 getApplicationContext()을 사용하는 것으로 나타났습니다. 워드 프로세서에서 : othersources을 바탕으로getApplicationContext()를 사용하여 토스트를 작성해야합니까?

Context context = getApplicationContext(); 
CharSequence text = "Hello toast!"; 
int duration = Toast.LENGTH_SHORT; 

Toast toast = Toast.makeText(context, text, duration); 
toast.show(); 

, 나는 getApplicationContext()를 사용하는 것은 일반적으로 나쁜 관행을 이해하기 위해 주어졌다. 토스트는 어떻게 든 예외입니까? 그렇다면 왜? 또는이 경우 Android 문서가 잘못 되었습니까?

답변

0

토스트는 컨텍스트가 표시되지 않거나 UI를 제어하지 않는 경우에도 사용할 수 있습니다. 다른 말로하면, 문서는 당신이 최소한의 컨텍스트를 가질 수 있다는 것을 지적하고 (여전히 서비스의 컨텍스트와 같음) 여전히 Toast를 사용합니다.

문서가 Context를 사용하기위한 "모범 사례"를 제시하는 것이 아니라 Toast의이 특성을 적절히 보여주기위한 것이라고 생각합니다.

+0

나는 당신이 문서의 의도에 대해 옳다고 생각합니다. 최소한의 Context로 생성 된 토스트는 앱에 특정한 스타일을 무시할 것입니다. –

4

가 나는 getApplicationContext()를 사용하는 것이 더 "당신이 Application를 사용하는 이유 당신이 을 알고 Application을 사용하여"로 일반적으로 나쁜 관행

나는 그것을 설명 할 것을 이해하기 위해 주어졌다. Android 개발자가 너무 많으면 Java 사용 경험이 미미하며 내부 수업에 혼란 스러우며 getApplicationContext() (또는 getBaseContext())으로 전화하여 Context을 매개 변수로 전달해야한다고 생각합니다.

Dave Smith's epic blog post 다른 역할로 Context 구현은 상당히 많은 수의 일반적인 사용 사례를 포함합니다 ... Toast은 그 중 하나가 아닙니다.

토스트는 어떻게 든 예외입니까? 그렇다면 왜?

토스트는 Toast를 표시하는 Application를 사용하는 특별한 필요가 없습니다 불구하고, ContextApplication와 함께 작동합니다.

아니면이 경우 Android 문서가 잘못 되었습니까?

코드가 작동하는 한 틀리지 않습니다. The JavaDocs for Toast은 여러 곳에서 Activity도 사용하면 괜찮 으면 Context이며, 그렇지 않으면 나타 내기 위해 the Toast source code에는 아무것도 표시되지 않는다고 지적합니다.

+0

+1 (이 계정이 +1 할 수있는 경우). 이 블로그 게시물은이 모든 것을 이해하는 데 정말로 유용합니다. 그러나 그 안에있는 정보를 기반으로 추가 테스트를했는데 응용 프로그램 컨텍스트로 만든 토스트는 기본 테마를 사용하여 응용 프로그램에서 설정 한 스타일을 무시합니다. 아마도이 예제 코드는 "작업"의 정의에 따라 "작동하지"않는다는 것을 의미합니다. –

관련 문제