2014-06-17 5 views
2

버튼 클릭으로 새로운 처리 스레드를 시작하는 기본 메뉴 화면이 있습니다.Android : 새로운 활동을 시작한 후 오래된 스레드를 계속 실행 하시겠습니까?

주 메뉴 활동은 새로운 활동을 시작합니다. 즉, OnPause() OnStop()에 들어가는 것을 의미하며, 처리 스레드가 계속 실행되기를 원합니다. 내가 읽은 바에 따르면 처리 스레드가 자동으로 삭제되지 않는 것처럼 보입니다. 이것은 액티비티가 파괴되거나 스레드가 수동으로 종료 될 때까지 스레드가 액티비티 전체에서 지속된다는 의미입니까?

스레드와 함께 사용 된 BlockingQueue를 새 Activity로 전달하면 새 작업이 이전 처리 스레드와 함께 대기열 (take and put)을 사용할 수 있습니까?

감사합니다.

+0

AsyncTasks를 가지고 있고 스레드가 레크리에이션 후에도 UI 호출을 계속한다는 것을 알고 있으므로 아마 작동 할 것이라고 말할 수 있습니다. 나는 또한 그것이 의도적으로 달리기를 원한다면 쓰레드가 서비스에 의해 소유되어야한다는 것이 나쁜 디자인이라고 말하고 싶다. –

답변

0

스레드는 한 번의 작업에서 시작한 스레드 위에 있어야합니다. 생존을 원하지 않을 때 좋은 연습은 onPause() 및 onStop() 수명주기 호출에서 해당 함수가 종료되었는지 확인하는 것입니다.

다른 활동과 관련된 매개 변수를 전달하면 해당 매개 변수가 유지되며 스레드가 계속 실행중인 경우 원하는대로 대기열에 추가 할 수 있어야합니다. 이 작업을 수행하는 경우 스레드 ID를 전달하여 수명주기를 관리 할 수 ​​있습니다. 그것은 하나의 활동을 넘어서 살 것입니다 무언가가 있다면, 당신이 그것을 마친/결국 당신이 끝나면 그것을 죽일 있는지 확인하십시오.

관련 문제