2013-10-02 4 views
1

활동에 열린 소켓 연결이있는 스레드가 있습니다. 다른 활동의 스레드에서 데이터를 가져올 수 있도록 스레드를 globaly로 사용하고 싶습니다. 백그라운드에서 뛰는 것과 같은 생각 ...어떻게 안드로이드에서 백그라운드에서 실행되는 스레드를 만들 수 있습니까?

나에게 맞는 솔루션이나 예제가 있습니까?

감사합니다. 당신은 소켓을 열고 심지어 다른 한편 경우에 활동 가까이 사용 Service

후 열어 확인하려면

:

답변

4

여러 활동이에 액세스 할 수 있도록하려면 당신은 비동기 Task-- Understanding AsyncTask

+0

백그라운드에서 무거운 프로세스를 수행하려는 경우 AsyncsTask가 훌륭한 옵션이 될 수 있습니다. –

0

당신은 두 가지 옵션이 있습니다 액티비티가 실행 중일 때 소켓을 열고 닫으려면 액티비티를 닫은 다음 AsyncTask을 사용하십시오.

당신은 문서에서 AsyncTaskhere

사용하는 방법을 예를 찾을 수 있습니다

네트워크 작업은 예상치 못한 지연을 포함 할 수있다. 이로 인해 사용자 경험이 저하되지 않도록하려면 UI의 별도 스레드에서 항상 네트워크 작업을 수행하십시오. AsyncTask 클래스는 UI 스레드에서 새 작업을 시작하는 가장 간단한 방법 중 하나를 제공합니다.

1

를 사용하여이 코드

void runInBackground() { 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        // DO your work here 
        // get the data 
        if (activity_is_not_in_background) { 
         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           //uddate UI 
          } 
         }); 
        } 
        runInBackground(); 
       } 
      }); 
     } 

그리고 세 번째 방법을 Service

찾고 또는 시도된다 스레드를 누른 다음 스레드를 실행 Vaibs_cool의 샘플 (그것은 단지 일반 스레드, 그것에 대해 아무것도 안드로이드 고유의) 결합하고 다음 ...

Application (매니페스트에 항목을 입력하십시오) 그 스레드를 넣으십시오.

그런 식으로 모든 활동을 대화 할 수 있습니다.

+0

응용 프로그램을 처음으로 확장하거나 자동으로 시작하는 클래스를 호출해야합니까? – GiGi

+0

아니요, 매니페스트에 넣는 한 실제로는 시작한 첫 번째 항목이며 앱에서 정리 된 마지막 항목입니다. 어떤 활동이 존재하는 한 거기에있을 것을 보장합니다. –

관련 문제