2012-06-06 5 views
1

나는 안드로이드 배우고 우리가 명시 적으로 슈퍼 클래스 (IntentService)의 생성자를 호출 할 필요가 왜 누군가가 말해 주시겠습니까의도 서비스 파생 호출 명시 적으로 슈퍼 클래스 생성자

public static class A extends IntentService { 
    public A() { 
     super("AppWidget$A"); 
    } 
} 

같은 예를 통해 온 건가요? 매개 변수 문자열은 무엇을 의미합니까?

답변

3

디버깅에만 사용됩니다. 다음은이를 사용 IntentService 소스 코드의 일부는 다음과 같습니다

public abstract class IntentService extends Service { 

    ... 
    private String mName; 
    ... 

    /** 
    * Creates an IntentService. Invoked by your subclass's constructor. 
    * 
    * @param name Used to name the worker thread, important only for debugging. 
    */ 
    public IntentService(String name) { 
     super(); 
     mName = name; 
    } 

    ... 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     HandlerThread thread = new HandlerThread("IntentService[" + mName + "]"); 
     thread.start(); 

     mServiceLooper = thread.getLooper(); 
     mServiceHandler = new ServiceHandler(mServiceLooper); 
    } 

    ... 
} 
+0

onCreate 코드에 대해 조금 설명해 주시겠습니까? $ 형식으로 매개 변수를 전달해야합니까, 아니면 단지 규칙일까요? – deXter

+1

@deXter :'mName' 사용법에 대해서만 설명하겠습니다. 보시다시피 처리기 스레드의 이름을 만드는 데 사용됩니다 (이름을 허용하는 Thread 생성자가 있음). 이것은 현재 실행중인 스레드를 기록해야하는 경우에만 유용합니다. 그래서 내부적으로 안드로이드는 이것을 인간 친화적 인 로깅에 사용합니다. 기본적으로 여기서 일어나는 일은 비 UI 백그라운드 스레드에서 IntentService 페이로드를 실행할 준비입니다. –

+1

@deXter :' $ 에 관해서 - 저는 코드 작성자가 그/그녀 자신의 패턴으로 사용하기로 마음 먹은 것 같아요. 이 경우 나는 보통 IntentService 클래스의 이름을 전달한다. –

0

IntentService 문자열 인수 소요 하나의 생성자가 "이름".I이 유일한 사용은 IntentService에 대한 작업자 스레드를 이름에 있음을 발견했다. 이 스레드의 이름은 IntentService [name]입니다.

관련 문제