소켓 프로그래밍 작성중인데
데이터를 외부로부터 수신하면 특정 액티비티의 화면이 변화하게 만들고 싶습니다.
그런데 소켓 수신 스레드에서 외부 함수를 호출하려고하면 어플리케이션 중단이 발생하면서 강제 종료되어버리네요.
구조는 대충 이렇습니다.
public class MainActivity extends FragmentActivity {
...
public class Reciver extends Thread {
public void run() {
try {
while (keepRunning) {
...
socket.recive(packet);
Fragment1.update(packet);
...
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static class Fragment1 extends Fragment {
...
public void onClick(View v) {
socket.send(data);
...
}
public static update(Packet data)
{
... //화면구성
}
...
}
}
에러를 자세히 볼줄은 모르지만 스레드에서 외부함수 호출에 관한 영역문제인 것 같습니다.
사실 액티비티의 인스턴스도 아니고, static으로 해버리는 것도 말도 안되긴 한데
그렇다고 스레드 내에서 액티비티의 뷰들을 다룰수 있는 것도 아니고,
액티비티가 계속 리스닝하고있는 것도 아닌데...
가장 비용이 적게 액티비티의 내부함수를 호출할 수 있는 방법좀 알 수 있을까요?
고수님들 감사합니다.