0

내 앱에 대한 활동 및보기를 만들었습니다. 보기 내부에는 서버처럼 작동하는 하나의 스레드가 있습니다. 보기에서 활동을 파괴하는 방법은 무엇입니까? 아니면 어떻게 둘 다 파괴 할까?

public class MainActivity extends Activity { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(new MainView(this)); 
} 
} 

public class ServerView extends View { 

public ServerView(Context context) { 
    super(context); 
     server.startServer(); 
} 
} 

가 나는 않으면 파괴 수동으로 파괴 않네 내 애플 리케이션에서는 backButton을 누르면,하지만 내 스레드는 백그라운드에서 계속 실행됩니다. 나는 이것을 사용하기 위해 backButton 이벤트를 잡아야한다.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
    server.shutDown(); 
} 
return super.onKeyDown(keyCode, event); 
} 

이 함수는 내 스레드를 멈추지 않는다. 내 주요 활동을 파괴하는 법을 모릅니다. 제안 사항이 있으십니까?

답변

0

넣어이 주요 활동 코드 및 서버보기에서 서버보기

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     server.shutDown(); 
    } 
    return super.onKeyDown(keyCode, event); 
    } 

액세스 활동 객체에서 접근을하고 전화 당신은 더 나은 Activity.finish() 메소드를 오버라이드 (override) 및 점유를 취소 한 것

0

이 코드 리소스 (예 : server.shutDown())가 있습니다.

0

은 단순히 당신이 당신의 활동을 파괴하는 마무리() 메소드를 사용할 수 있습니다

0

을 원하는대로 작동 finish()를 호출합니다. 그리고 당신은 활동을 파괴하려는 경우, 당신은 Activity.finish()을 사용할 수 있습니다, 제 생각에는,

if(thread != null) 
{ 
    Thread t1 = thread; 
    thread = null; 
    t1.interrupt(); 
} 
0

를 배경 사용 return 문에서 스레드 실행을 파괴하거나합니다. 임의의 스레드를 파괴하려는 경우 System.exit(0);

관련 문제