Получение обработчика из потока из сервиса в активность

Ситуация:

деятельность привязана к начальному сервису переднего плана.служба раздает местные связующие для деятельности.активность получает ссылку на сервис через вызов getService ().активность хочет общатьсянепосредственно с потоком, работающим в службе, используя сообщения. Он вызывает метод mService.getThreadHandler () из действия.

Проблема:

Как получить обработчик из текущего запущенного потока в активную активность, чтобы я мог публиковать сообщения непосредственно в очереди сообщений потоков?

Я не знаю, что использовать мессенджер в сервисе, я хочу напрямую общаться с потоком в сервисе со стороны активности.

Редактировать: действие получает обработчик самого потока в службе, вызывая что-то вроде этого:

Код деятельности:

Handler mServiceThreadHandler;
ServiceConnection mServiceConnection;

public void onStart() {
  if (!bindService(new Intent(this, MainService.class), mServiceConnection,    Context.BIND_AUTO_CREATE)) 
  {
    Log.e(TAG, "Client did not bind to Service!");
  } 
  super.onStart();
}

public class MyLocalServiceConnection implements ServiceConnection {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        LocalBinder binder = (LocalBinder) service;
        mService = (MainService) binder.getService();
                    // the handler of the service is actually a handler of a thread
                    // within the service, and is set automatically within the binding
                    // activity when binding to the service. That way you have a direct
                    // "connection" with the message queue of the thread instead of
                    // a message queue in the service itself (main thread of service)
        mServiceThreadHandler = mService.getServiceHandler();

        if (mServiceThreadHandler == null) {
            Log.e(TAG, "Service handler is NULL");
        }
        mBoundedToService = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        mServiceThreadHandler = null;
        mBoundedToService = false;
    }
}

Сервисный код:

private HandlerThread mServiceThread = new MyServiceThread();

public Handler getServiceHandler() {
    return new Handler(mServiceThread.getLooper());
}

Линовый обработчик (mServiceThread.getLooper ()); вернуть новый обработчик или тот же обработчик в mServiceThread?

Изменить 2: обновление кода сервиса с помощью serviceThread, который получает сообщения.

public class MyService extends Service {
  private MyHandlerThread serviceThread = new MyHandlerThread("serviceThread");

  serviceThread.start();

public Handler getServiceHandler() {
  // hand out the same handler of the service thread for using it in an activity!
  // serviceThread.getLooper() is the current looper of the thread
  // serviceThread is the 'this' which handles the messages (see MyHandlerThread)
  return new Handler(serviceThread.getLooper(), serviceThread); 
}

  // do stuff in Service
}

public class MyHandlerThread extends HandlerThread implements android.os.Handler.Callback {
public MyHandlerThread(String name) {
    super(name);
}
public MyHandlerThread(String name, int priority) {
    super(name, priority);
}
@Override
public boolean handleMessage(Message msg) {
    // TODO define your own message handling here.
    return false;
}
}

Верный?

Ответы на вопрос(1)

Ваш ответ на вопрос