2017-02-14 25 views
0

Шаг №1. Требуется реализовать интерфейс ServiceConnection:Интерфейс реализации ServiceConnection

public class ServiceBinding<T extends ParentService<T>> implements ServiceConnection { 
    public T bindedService; 

    @Override 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     // Warning: Type safety: Unchecked cast from IBinder to ChatService<T>.LocalBinder 
     bindedService = ((T.LocalBinder) service).getService(); 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName arg0) { 
    } 
} 

Шаг # 2. Тогда Родитель-служба будет выглядеть следующим образом:

public abstract class ParentService<T extends ParentService<T>> extends Service { 
    public class LocalBinder extends Binder { 
     public T getService() { 
      return (T) T.this; // Warning: Unchecked cast from ChatService<T> to T 
     } 
    }; 
} 

Вопрос: ли такое решение приемлемым?

Каким образом следует должным образом реализовать ServiceConnection?

ответ

0

Вы можете реализовать, как это -

private ServiceConnection mConnection = new ServiceConnection() { 

    @Override 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     LocalBinder binder = (LocalBinder) service; 
     service = binder.getService(); 
     boundVal = true; 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName arg0) { 
     boundVal = false; 
    } 
}; 

boundVal является триггером для "unbindservice. Перейдите на boundval с соединением в качестве параметра.

onServiceConnected() и onServiceDisconnected() вызывается, как только соединение клиент-сервер установлено или отключено соответственно. В случае метода onServiceConnected() это будет передан объект IBinder, содержащий информацию, необходимую клиенту для взаимодействия с услугой. Приветствия!

+0

Вопрос о том, как сделать обобщенную реализацию привязки во избежание дублирования кода. – DukeSpontaneous

 Смежные вопросы

  • Нет связанных вопросов^_^