Firebasequery가 완료되기 전에 Android 비동기 작업이 완료 됨

스틸 세일러

비동기 작업에서 Firebasequery를 실행하고 싶습니다. 문제는 내가 Thread.sleep (5000)을 호출해야한다는 것입니다. 예상 결과 목록을 가져옵니다. 그렇지 않으면 태스크가 Firebase 쿼리 완료를 기다리지 않고 종료되기 때문에 목록이 항상 비어 있습니다. 작업은 백그라운드 서비스에서 호출되고 Task.execute (). get ()을 통해 결과를 기다립니다.

Thread.sleep ()을 호출하지 않고 비동기 작업 결과를 얻을 수있는 가능성이 있습니까?

     @Override
protected ArrayList<Product> doInBackground(InventoryCheckService... params) {
    this.service = params[0];
    result = new ArrayList<>();
    DatabaseReference userReference = DatabaseAdapter.getInstance().getUserReference();
    if(userReference != null){
        userReference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                HashMap<String, Product> changedProducts = dataSnapshot.getValue(new GenericTypeIndicator<HashMap<String, Product>>() {
                });
                if(changedProducts != null){
                    Iterator<String> iterator = changedProducts.keySet().iterator();
                    String nextExpirationDate = getDateForTommorow();
                    while (iterator.hasNext()) {
                        String nextKey = iterator.next();
                        Product product = changedProducts.get(nextKey);
                        if (product.getBestBeforeDate().containsKey(nextExpirationDate)) {
                            result.add(product);
                        }
                    }
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    return result;
}

도움을 주셔서 미리 감사드립니다! :)

스틸 세일러

마침내 나는 내 문제를 해결했습니다. Taskexecution 후에 Intent를 올리고 싶었습니다. 서비스에서 인 텐트를 시작하는 대신 코드를 비동기 작업에 넣었습니다.

 @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            HashMap<String, Product> changedProducts = dataSnapshot.getValue(new GenericTypeIndicator<HashMap<String, Product>>() {
            });
            if(changedProducts != null){
                Iterator<String> iterator = changedProducts.keySet().iterator();
                String nextExpirationDate = getDateForTommorow();
                while (iterator.hasNext()) {
                    String nextKey = iterator.next();
                    Product product = changedProducts.get(nextKey);
                    if (product.getBestBeforeDate().containsKey(nextExpirationDate)) {
                        result.add(product);
                    }
                }
                 // start Intent here...
            }

이제는 작업이 인 텐트를 시작하는 작업의 일부이기 때문에 작업이 완료 될 때까지 잠을 잘 필요가 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

작업이 완료되기 전에 NodeJS 비동기가 완료 됨

분류에서Dev

C # 비동기 작업이 완료되기 전에 완료 됨

분류에서Dev

Spring-batch가 종료 상태로 종료 됨 : 실제 작업이 완료되기 전에 완료 되었습니까?

분류에서Dev

이전 작업이 완료되기 전에 작업이 시작됨

분류에서Dev

첫 번째 Jquery가 완료되기 전에 두 번째 Jquery json이 시작됨

분류에서Dev

쿼리가 완료되기 전에 완료된 Big Query 작업 상태

분류에서Dev

DELETE 요청이 완료되기 전에 페이지가 렌더링 됨

분류에서Dev

소셜 공급자에 대해 비동기 작업이 완료되기를 기다리는 동안 HttpServerUtility.Execute가 차단됨

분류에서Dev

파일 업로드를 완료하기 전에 스크립트가 종료 됨

분류에서Dev

q. 약속이 완료되기 전에 모두 반환 됨

분류에서Dev

프로그램이 종료되기 전에 신호 CGI 출력이 완료 됨

분류에서Dev

쓰기가 완료되기 전에 IndexedDB 읽기 완료

분류에서Dev

모든 작업이 완료되기 전에 ThreadPoolExecutor 종료

분류에서Dev

작업이 완료되기 전에 반환되는 완료 핸들러

분류에서Dev

비동기 응답이 돌아 오기 전에 fsx 스크립트가 완료 됨

분류에서Dev

Jquery 지연됨-이전 함수가 완료되기 전에 함수 호출 연기

분류에서Dev

완료 처리기가 작동하지 않음 (모든 작업이 동시에 실행 됨)

분류에서Dev

예상 전에 작업이 완료 됨

분류에서Dev

콜백이 완료되기 전에 socket.io 함수가 반환 됨-Node.js

분류에서Dev

작업이 완료되기 전에 WPF 창 닫기

분류에서Dev

비동기가 작업을 완료하기 전에 프로그램이 종료되는 이유는 무엇입니까?

분류에서Dev

작업이 완료되기 전에 약속 해결 화재

분류에서Dev

소스 Observable이 완료되기 전에`merge` 연산자가 완료되는 이유는 무엇입니까?

분류에서Dev

비동기 작업이 완료되기 전에 데이터가 변경된 경우 setState 작업을 취소해야합니까?

분류에서Dev

Cloud Function에서 쓰기가 완료되면 값 업데이트

분류에서Dev

Android 비동기 그룹 비동기 작업 완료

분류에서Dev

이벤트가 완료되기 전에 jQuery 애니메이션 완료가 실행됩니다.

분류에서Dev

AWS Lambda가 수명주기 작업 완료시 중단됨

분류에서Dev

이 작업이 완료되기 전에 코드가 실행되는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    작업이 완료되기 전에 NodeJS 비동기가 완료 됨

  2. 2

    C # 비동기 작업이 완료되기 전에 완료 됨

  3. 3

    Spring-batch가 종료 상태로 종료 됨 : 실제 작업이 완료되기 전에 완료 되었습니까?

  4. 4

    이전 작업이 완료되기 전에 작업이 시작됨

  5. 5

    첫 번째 Jquery가 완료되기 전에 두 번째 Jquery json이 시작됨

  6. 6

    쿼리가 완료되기 전에 완료된 Big Query 작업 상태

  7. 7

    DELETE 요청이 완료되기 전에 페이지가 렌더링 됨

  8. 8

    소셜 공급자에 대해 비동기 작업이 완료되기를 기다리는 동안 HttpServerUtility.Execute가 차단됨

  9. 9

    파일 업로드를 완료하기 전에 스크립트가 종료 됨

  10. 10

    q. 약속이 완료되기 전에 모두 반환 됨

  11. 11

    프로그램이 종료되기 전에 신호 CGI 출력이 완료 됨

  12. 12

    쓰기가 완료되기 전에 IndexedDB 읽기 완료

  13. 13

    모든 작업이 완료되기 전에 ThreadPoolExecutor 종료

  14. 14

    작업이 완료되기 전에 반환되는 완료 핸들러

  15. 15

    비동기 응답이 돌아 오기 전에 fsx 스크립트가 완료 됨

  16. 16

    Jquery 지연됨-이전 함수가 완료되기 전에 함수 호출 연기

  17. 17

    완료 처리기가 작동하지 않음 (모든 작업이 동시에 실행 됨)

  18. 18

    예상 전에 작업이 완료 됨

  19. 19

    콜백이 완료되기 전에 socket.io 함수가 반환 됨-Node.js

  20. 20

    작업이 완료되기 전에 WPF 창 닫기

  21. 21

    비동기가 작업을 완료하기 전에 프로그램이 종료되는 이유는 무엇입니까?

  22. 22

    작업이 완료되기 전에 약속 해결 화재

  23. 23

    소스 Observable이 완료되기 전에`merge` 연산자가 완료되는 이유는 무엇입니까?

  24. 24

    비동기 작업이 완료되기 전에 데이터가 변경된 경우 setState 작업을 취소해야합니까?

  25. 25

    Cloud Function에서 쓰기가 완료되면 값 업데이트

  26. 26

    Android 비동기 그룹 비동기 작업 완료

  27. 27

    이벤트가 완료되기 전에 jQuery 애니메이션 완료가 실행됩니다.

  28. 28

    AWS Lambda가 수명주기 작업 완료시 중단됨

  29. 29

    이 작업이 완료되기 전에 코드가 실행되는 이유는 무엇입니까?

뜨겁다태그

보관