How is it better to abstract the mechanism for obtaining methods of a particular MyService , and are there any attempts at all to reduce the repeatability of the code in this case?
The solution is to copy the code for each Service (by android.com/guide ):
/** Точка доступа к ChatServerService. */ private ChatServerService mChatServerService; /** Точка доступа к ChatClientService. */ private ChatClientService mChatClientService; /** Объект подключения к Service'у ChatServerService */ private final ServiceConnection mServerConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { // Получение объекта сервиса при успешном подключении mChatServerService = ((ChatServerService.LocalBinder) service).getService(); }; @Override public void onServiceDisconnected(ComponentName arg0) { Toast.makeText(getBaseContext(), "Неявный разрыв...", Toast.LENGTH_LONG).show(); mChatServerService = null; }; }; /** Объект подключения к Service'у ChatClientService */ private final ServiceConnection mClientConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { // Получение объекта сервиса при успешном подключении mChatClientService = ((ChatClientService.LocalBinder) service).getService(); }; @Override public void onServiceDisconnected(ComponentName arg0) { Toast.makeText(getBaseContext(), "Неявный разрыв...", Toast.LENGTH_LONG).show(); mChatClientService = null; }; };