2011-09-13 4 views
0

장기 실행 프로세스를 실행하고 Handler를 호출하기 위해 android.app.Service (IntentService가 아니라 AsyncTask가 아닌)를 사용하고 싶습니다. .sendMessage (..) 프로세스 중에.Android : 방법 : 백그라운드에서 실행중인 서비스를 만들고 Handler.sendMessage (..)를 호출하십시오.

아래 코드를 사용하면 충분합니다 (서비스의 onCreate 메소드)?

@Override 
public void onCreate() { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      Log.w(LOG_LOGCAT_TAG, "DEBUG MODE - CallbackImpl handleError() called"); 
      // get the location information (lat,lon,altitude etc..) 
      // then, call callback methods. 
      _locationProvider.getLocation(_locationCallbackImpl); 
     } 

    }).start(); 
} 

private final LocationCallbackImpl _locationCallbackImpl = new LocationCallbackImpl(); 

private class LocationCallbackImpl 
    implements 
     LocationCallback 
     { 
    @Override 
    public void done() { 
     Log.i(LOG_LOGCAT_TAG, "LocationCallbackImpl done() called"); 
     // switch to UI thread 
     _handler.sendMessage(_handler.obtainMessage(DONE_MESSAGE)); 
    } 

    @Override 
    public void handleError(ReturnCode returnCode) { 
     Log.e(LOG_LOGCAT_TAG, "LocationCallbackImpl handleError() called:" + returnCode.name()); 

     // send a message to display the error 
      _handler.sendMessage(_handler.obtainMessage(ERROR_MESSAGE, returnCode)); 
    } 

    @Override 
    public void handleSuccess(Location location) { 
     Log.i(LOG_LOGCAT_TAG, "LocationCallbackImpl handleSuccess() called"); 
      _handler.sendMessage(_handler.obtainMessage(LOCATION_MESSAGE, location)); 
    } 
} 

모든 콜백이 위의 스레드에서 호출되면 사용자에게 묻고 싶습니다.

실제로 해당 스레드에서 실행 중인지 어떻게 확인할 수 있습니까? 그것을 확인하는 방법이 있습니까?

답변

1

getter and setter of Handler inside service을 구현하고 통지를 수신하려는 활동에서이 처리기를 설정해야합니다.

+0

처리기에 대한 getter/setter를 적용하기 위해 샘플 코드를 수정 하시겠습니까? – eros

관련 문제