Ответ 1
Прежде всего, почти всегда плохая практика пропускает экземпляры Activity. Это время, когда это плохо.
Определите интерфейс и используйте обратный вызов, чтобы сообщить активности, что ответ получен.
public interface ResponseReceivedListener {
void onResponseReceived(int arg1, string arg2); ..<----add arguments you want to pass back
}
В вашем классе TCPServer
ArrayList<ResponseReceivedListener> listeners = new ArrayList<ResponseReceivedListener>();
...
public void addResponseReceivedListener(ResponseReceivedListener listener){
if (!listeners.contains(listener){
listeners.add(listener);
}
}
public void removeResponseReceivedListener(ResponseReceivedListener listener){
if (listeners.contains(listener){
listeners.remove(listener);
}
}
Когда вы получите ответ
for (ResponseReceivedListener listener:listeners){
listener.onResponseReceived(arg1, arg2);
}
В вашей деятельности:
public class MainActivity extends Activity implements ResponseReceivedListener {
...
@Override
public void onCreate(Bundle savedInstanceState)
{
...
tcpServer.setResponseReceivedistener(this);
...
}
public void onResponseReceived(int arg1, string arg2){
// do whatever you need to do
}
Все из памяти, поэтому, пожалуйста, извините опечатки.
Этот подход отделяет классы. Сервер TCP не знает о действиях. Он просто обращается к любому зарегистрированному слушателю. Этими слушателями могут быть занятия, они могут быть услугами. Они могут быть примерами MySparklyUnicorn. Сервер не знает и не заботится. Он просто говорит: "Если кто-то заинтересован, я получил ответ, и вот подробности".