2010-11-28 4 views
2

TCP 연결을 수신하는 스레드가 있습니다. 연결이되면 기본적으로 현재 활동이하는 일을 중단하고 다른 스레드를 실행하고 다른 레이아웃을 표시하는 다른 활동으로 이동하려고합니다.스레드의 현재 활동보기

현재 스레드 (TCP 연결을 기다리는)를 계속 실행하고 싶습니다.

인 텐트에서 startActivity()를 사용하여 활동을 바꿀 수는 있지만 스레드 내에서는 작동하지 않습니다.

어떻게하면 좋을까요?

고마워,

제임스 안드로이드에서 장기 실행 작업 프로그램의 엄지 손가락의

답변

5

규칙. 당신이있는 경우 :

  1. 짧은 - 실행중인 작업 (스레드)를 한 번에 하나 개의 활동에 의해 사용되는 다음 AsyncTask를 사용합니다.

  2. Activity의 수명주기를 따라 살아야하고/또는 복수 활동 (앱 외부에도 있음)에서 사용되어야하는 장기 실행 작업은 Service을 사용하십시오. 서비스는 활동보다 종료에 더 탄력적 인 별도의 프로세스입니다.

  3. 위치 변경, 네트워크 사용 등의 외부 조건에 따라 실행해야하는 작업. 정기적 인 데이터 동기화 또는 타이머 기반 작업이 필요한 경우에는 작업 실행, 적절한 API를 사용하여 코드를 등록하면 OS는 적절할 때이를 호출합니다. 이것은 비동기 프로그래밍이라고 불리우며, 호출해야 할 때 코드를 호출하여 메모리 및 프로세서 사용을 최소화하므로 안드로이드에서 선호되는 옵션입니다.

+0

그 설명에 대해 매우 감사드립니다. 매우 유용합니다. 서비스 또는 API를 사용해야합니다 (2 또는 3). TCP 연결을 기다릴 수있는 API가 있는지 확실하지 않습니다. 내가 어떻게 알아낼 수 있는지 알고 있니? 그렇지 않으면 고마워! 매우 도움이된다! – James

+0

서비스가 활동을로드 할 수 있습니까? 내 서비스는 TCP 연결을 영원히 기다리는 것입니다. 하나가 발생하면 UDP 패킷을 수신하고 보내는 액티비티가 시작됩니다 (자체 레이아웃이기도합니다). 그게 효과가 있니? – James

+0

앱이 백그라운드 일 때도 TCP 연결을 계속 열어 두어야합니까? 이렇게하면 배터리가 소모되고 모바일 네트워크에서 많은 비용이 발생할 수 있습니다. –

관련 문제