2014-01-28 1 views
-2

나는 활동으로 작성했다.자바를 사용하여 안드로이드에서 동시에 간단한 작업을 수행하는 방법

이 활동의 ​​변수를 true로 설정하고 5 초 동안 기다렸다가 현재 스레드 실행을 중단하지 않고 변수를 다시 false로 전환하기 만하면됩니다.

도움을 주시면 감사하겠습니다. 나는 이것을 몇 시간 동안 봤고 모든 종류의 성공을 시도했다.

+0

당신이 BackgroundTask으로 이것을 실행하는 tryed 적이 있습니까? false로 전환하면 작업이 종료됩니다. –

+0

나는 이것을 시도했지만 작동하지 않았다. 나는 부울을 사용하고 while 루프는 작업이 완료되면 설정한다. – user3078403

+2

같은 주제에 대해 많은 게시물이 있는데, 왜 그 것이 실패했는지 언급한다. 그렇지 않으면. – harshal

답변

0

나는 당신을 위해 무엇을 찾고있는 것은 AsyncTask를 생각합니다.

http://developer.android.com/reference/android/os/AsyncTask.html

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
    protected Long doInBackground(URL... urls) { 
     int count = urls.length; 
     long totalSize = 0; 
     for (int i = 0; i < count; i++) { 
      totalSize += Downloader.downloadFile(urls[i]); 
      publishProgress((int) ((i/(float) count) * 100)); 
      // Escape early if cancel() is called 
      if (isCancelled()) break; 
     } 
     return totalSize; 
    } 

    protected void onProgressUpdate(Integer... progress) { 
     setProgressPercent(progress[0]); 
    } 

    protected void onPostExecute(Long result) { 
     showDialog("Downloaded " + result + " bytes"); 
    } 
} 

생성되면, 작업은 매우 간단하게 실행됩니다

new DownloadFilesTask().execute(url1, url2, url3); 
0

당신은 doInBackground() 방법 내부 AsyncTask를 인터페이스 및 수면을 구현하고 당신이 부울 변수

부울 bValue = 거짓이 클래스에 다시 onPostExecute() 방법

당신의 변수를 변경해야합니다;

는 그런 다음 활동

private class sleepFiveTask extends AsyncTask<Void, Void, Void> { 

    protected void onPreExecute() { 
     bValue = true; 
    } 

    protected void doInBackground(Void... params) { 
     try { 

       Thread.sleep(5000); //sleep for 5 seconds 
     } catch (InterruptedException e) { 
       e.printStackTrace(); 
       // handle the exception...   
       // For example consider calling Thread.currentThread().interrupt(); here. 
     } 
    } 

    protected void onPostExecute(Void result) { 
     bValue = false; 
    } 
} 

을 내부에 private 클래스를 추가하고 실행할 때 실행

새로운 sleepFiveTask() .Execute를();

0

Thread부터 시작할 수 있습니다. 예 :

boolean myvar = true; 

new Thread(
    new Runnable() { 
    public void run() { 
     SystemClock.sleep(5000); 
     myvar = false; 
    } 
    } 
}).start(); 
+0

이 시도, 현재 스레드 실행을 동결 – user3078403

+0

그것은 말이되지 않습니다. 실행이 정말로 멈 추면 다른 이유로 UI UI 스레드에서 실행되지 않는 병렬 스레드를 시작해야합니다. – nKn

+0

또한 당신은 여분의}, 귀하의 응답을 위해 다시 고마워요 – user3078403

관련 문제