안드로이드 개발 질문/답변
(글 수 45,052)
array변수에 문자열을 매우 길게(이클립스 전체화면 기준으로 최소 50줄 이상)하고
handler, runnable, thread의 동작성을 확인하기 위해 substring(i,j)으로 문자로 자른뒤, 그 문자를
Log로 출력하는 소스를 짰습니다.
실제 handler에 대한 지식은 매우 부족해서 사용하지 않았고,
runnable, thread로는 함 해봤는데요...
start는 잘 됩니다. 결과는
내
용
이
출
력
...
이렇게요.
문제는 이걸 일시중지(일시중지가 성공하면 중지한 다음 문자부터 재시작도 있어야 됨) 나 종료를 시키려고 onDestroy에
runnable의 경우 handler.removeCallbacks(r), thread의 경우 if문을 줘서 결과가 맞으면
thread.interrupt를 주었는데 액티비티 종료 뿐만 아니라 어플리케이션을 종료해도 Log에 array가 한글자씩 계속
찍히네요...(thread의 경우 stop이나 suspend(??)는 deprecated라서 무용지물인걸로 알고 있고...)
runnable의 경우 handler선언 후에 Runnable r = ... 이런식으로 짰고, thread는 inner 클래스를
만들었습니다.
(2개 겹치지 않게 하나를 쓸 경우 다른 하나는 주석처리 했습니다.)
인터넷 찾아보니까 thread는 interrupt를 쓰면 종료가 되고, runnable은 removeCallbacks를 쓰면 종료가
된다고 하는데, 제 경우는 그게 아니네요...
알고 싶은거는 handler, runnable, thread를 start한 후 종료방법 만이 아니라, 일시중지와 다시시작, 종료법까지 알고 싶습니다.




종료=false;
일시중지=false;
일시중지
일시중지=true;
while(!종료)
{
if(!일시중지)
{
//Do
}
}
다시시작
위에꺼에 일시중지=false;
종료
위에꺼에 종료=true;