현재 SurfaceView를 상속받아 클래스를 생성했습니다.
그 클래스 내부에는 소켓통신을 통해 이미지를 받고 있는데요
보통 Activity를 상속받은 클래스 에서는 onBackPressed() 메소드가
먹히는데요
SurfaceView를 상속받은 부분에서는 어떻게 처리를 해줘야 하나요?? ㅠㅠ
어떻게 처리를 해주는게 맞는건가요?? ㅠㅠㅠ
계속 찾고 있는데 안나오네요 ㅠㅠ
------------------------------------------------------------ 추가 질문입니당 ㅠㅜㅠ
로그캣 내용은 다음과 같습니다.
12-19 01:52:38.477: E/AndroidRuntime(10090): FATAL EXCEPTION: Thread-10
12-19 01:52:38.477: E/AndroidRuntime(10090): java.lang.NullPointerException
12-19 01:52:38.477: E/AndroidRuntime(10090): at code13.smartremote.client.ScreenWindow.doDraw(ScreenWindow.java:146)
12-19 01:52:38.477: E/AndroidRuntime(10090): at code13.smartremote.client.ScreenWindow.run(ScreenWindow.java:111)
12-19 01:52:38.477: E/AndroidRuntime(10090): at java.lang.Thread.run(Thread.java:1019)
doDraw라는 쓰레드가 진행되는 와중에 액티비티를 이동하게 되면 강제종료가 되네요 ㅠㅠㅠ
서피스뷰를 이용하기 때문에 서피스데스트로이에 스레드종료를 시켯는데도 안잡히네요 ㅠㅠ
스레드를 중간에 중단시키기 위해서 어떻게 해야 되나요> ㅠㅠ
정확히 하시고자 하는 동작이 어떤것인지 말씀해주시면 다른 분들이 이해하기가 쉬울 것 같네요..
특정 상황에서 쓰레드를 종료시키고 싶으신 것인가요? 아니면, SurfaceView클래스내에서 강제로 뒤로가기 기능을 넣고 싶으신 건가요?
바람소리님 말씀처럼, reciver라든지, 이벤트리스너등을 통해서 처리하실 수 있습니다.
위 방법 말고도, 더 간단하게 하신다면... surfaceView에 모든 처리가 있기에, 꼭 surfaceView에서 activity종료를 호출 하시려면,
생성자에 해당 activity를 인자로 주시고, finish()메서드 호출 하셔도 됩니다.
class custumizeSurface extends SurfaceView{
private Activity activity;
//생성자에서 Activity를 인자로 받음.
public custumizeSurface(Activity paramAct) {
activity = paramAct;
}
쓰레드가 종료될때 activity.finish()호출
}




SurfaceView는 Activity를 구성하는 일부입니다. 즉 Activity위에 올라가는 컨트롤이라고 보심 되죠.
"보통 Activity를 상속받은 클래스 에서는 onBackPressed() 메소드가 먹히는데요" 라고 말씀 하신 것 처럼, 뒤로가기 버튼 이벤트를
처리하기 위해서는 해당 뷰(여기선 SurfaceView를 상속받은 클래스를 말합니다)를 올려놓은 Activity에서 이벤트 처리를 해주셔야 겠지요.