두 개의 asyc 작업이 모두 별도의 네트워크 작업을 수행합니다. 하나의 비동기 작업이 하나의 변수에 대해 다른 작업을 마칠 때까지 기다리는 것이 좋습니다. 다른 작업을 수행하는 것과 같았습니다. 첫 번째의하지만 난 ... 완료 첫 번째를 기다리는 다른 작업을해야 할 하나의 변수에 대한 asyc 작업 onPostexecute은과 효과적으로 다른 작업이 완료 될 때까지 기다리는 Android 비동기 작업
3
A
답변
3
this을 참조하면 .execute()를 사용할 수 없습니다.
먼저이처럼 작업을 시작해야합니다 :
// Start first task
new Task1().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
// Start second task
new Task2().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
및 작업의 양이에 액세스 할 수 있도록 당신은 정적 변수를 만들 수의
public static boolean task1Finished = false;
그런 다음 간단한 예를 작업 :
첫 번째 작업
private class Task1 extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Log.d("myApp", "Task1 started");
for(int x = 0; x < 10; ++x)
{
try
{
Thread.sleep(1000);
//Log.d("myApp", "sleeped 1000 ms");
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
return "";
}
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(String result) {
// Lets the second task to know that first has finished
task1Finished = true;
}
}
두 번째 작업
private class Task2 extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Log.d("myApp", "Task2 started");
while(task1Finished == false)
{
try
{
Log.d("myApp", "Waiting for Task1");
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
Log.d("myApp", "Task1 finished");
// Do what ever you like
// ...
return "";
}
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(String result) {
Log.d("myApp", "All done here (Task2)");
}
}
0
당신은 첫 번째 경우의 onpostExecute 다른 비동기를 작성해야하는이 달성하는 것입니다 다른 쪽을 동 기적으로 호출해야합니다.
4
어쩌면 AsyncTask를 최고의 도구가 아닙니다? 안드로이드 developper에서
인용구 : : 특히 동기화 일을 도울 수있는 안드로이드 API의 몇 가지 흥미로운 클래스가 있습니다 "네 클래스는 일반적인 특수 목적 동기화 숙어 도움
세마포어는 고전적인 동시성이다. 도구입니다.
해, CountDownLatch는 신호, 이벤트, 또는 조건 개최의 지정된 수까지 차단하기위한 매우 간단하면서도 매우 일반적인 유틸리티입니다.
- 으로 CyclicBarrier는 resetta입니다 멀티 스타일 동기화 포인트는 병렬 프로그래밍의 일부 스타일에 유용합니다.
- 교환기는 랑데부 지점에서 객체를 교환하는 두 개의 스레드를 허용하고, 여러 파이프 라인 설계에 유용하다 "그래서
난에보고 제안 :.
순환 장벽 http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
기 http://developer.android.com/reference/java/util/concurrent/Exchanger.html
관련 문제
- 1. 비동기 잡다한 작업이 완료 될 때까지 기다리십시오.
- 2. C# 비동기 작업이 완료 될 때까지 대기
- 3. 비동기 요청이 완료 될 때까지 기다리는 방법
- 4. PhoneGap 비동기 작업이 완료 될 때까지 대기
- 5. 비동기 작업이 완료 될 때까지 기다리십시오.
- 6. plist 쓰기 작업이 완료 될 때까지 기다리는 방법?
- 7. Android 비동기 작업이 완료 될 때까지 서비스가 바인딩되는 것을 방지합니다.
- 8. 비동기 단계가 완료 될 때까지 기다리는 방법은 무엇입니까?
- 9. Azure 시작 작업, 다른 모든 작업이 완료 될 때까지 기다림
- 10. C# - 복사 작업이 완료 될 때까지 기다리는 중
- 11. 작업이 완료 될 때까지 기다리십시오.
- 12. 비동기 작업이 완료 될 때까지 비동기 작업이 완료 될 때까지 UI 스레드의 실행을 중지하는 방법 안드로이드에서 AsyncTask에 들어있는 값
- 13. ContinueWith 메서드는 비동기 작업이 완료 될 때까지 대기하지 않습니다.
- 14. Observable.Interval은 작업이 완료 될 때까지 대기합니다.
- 15. SSIS 패키지가 완료 될 때까지 기다리는 방법
- 16. 호출 된 작업이 완료 될 때까지 기다리는 것을 피하십시오.
- 17. MoveTo 작업이 완료 될 때까지 기다리는 올바른 방법은 무엇입니까?
- 18. 여러 스레드가 완료 될 때까지 기다리는 방법?
- 19. Xcode에서 작업이 완료 될 때까지 기다림
- 20. WP7에서 비동기 호출이 완료 될 때까지 기다리는 방법?
- 21. 비동기 실행 블록이 완료 될 때까지 기다리는 중
- 22. HTTP 요청이 완료 될 때까지 기다리는 중
- 23. 취소 된 작업이 완료 될 때까지 대기
- 24. 비동기 웹 서비스 호출이 작업 내에서 완료 될 때까지 기다림
- 25. 비동기 작업이 완료 될 때까지 기다립니다. Angular JS를 시작하기 전에
- 26. 비동기 작업이 스칼라에서 완료 될 때까지 어떻게 대기합니까?
- 27. NSXMLParser가 iOS에서 완료 될 때까지 기다리는 방법
- 28. 작업 배열이 완료 될 때까지 기다리는 방법은 무엇입니까?
- 29. Ruby on Rails에서 응답을 보내기 전에 여러 비동기 작업이 완료 될 때까지 기다리는 방법은 무엇입니까?
- 30. 작업이 완료 될 때까지 qsub 블록을 만드시겠습니까?
귀하의 생각은 정확했습니다. 시도해 보셨습니까? – Riser
이제 구현은 li입니다. 그게 단지 ...하지만 ... 단일 변수에 대한 큰 작업을 연기해야만합니다. – paul
그림을 본 것입니다. – paul