Tôi có một hoạt động gọi initLoader khi nó được tạo để tải dữ liệu mà hoạt động sẽ hiển thị. Thông thường, điều này hoạt động tốt. Tôi đã thiết lập các điểm ngắt để xem thứ tự mà mọi thứ xảy ra. Đầu tiên tôi gọi initLoader, sau đó tôi nhận được gọi lại OnCreateLoader, sau đó gọi lại OnLoadFinished, sau đó tất cả mọi thứ là rất tốt.Đôi khi không nhận được gọi lại onCreateLoader sau khi gọi initLoader
Tuy nhiên, tôi nhận thấy rằng nếu tôi thay đổi hướng trên Android của mình mà tôi không nhận được cuộc gọi lại OnCreateLoader hoặc gọi lại OnLoadFinished, kết quả là không có dữ liệu được hiển thị trên trang. Tôi vẫn nhận được breakpoint của tôi trên lời gọi initLoader vì vậy tôi biết điều đó đang xảy ra, nhưng tôi không gặp lỗi và tôi không thể tìm thấy bất kỳ tài liệu nào giải thích lý do tại sao tôi sẽ không nhận được cuộc gọi lại sau khi gọi initLoader.
Thật thú vị, tôi nhận được cuộc gọi lại nếu tôi quay lại hướng ban đầu.
Vì vậy, để tóm tắt:
tôi bắt đầu hoạt động theo hướng dọc
- tôi gọi initLoader
- tôi nhận được onCreateLoader và onLoadFinished callbacks
sau đó tôi chuyển sang cảnh quan
-
.210
- tôi gọi initLoader
- không onCreateLoader hoặc callbacks onLoadFinished
tôi thay đổi trở lại chân dung
- tôi gọi initLoader
- tôi nhận được onCreateLoader và onLoadFinished callbacks
Tương tự như vậy, nếu tôi bắt đầu hoạt động ở chế độ ngang, tôi sẽ nhận được cuộc gọi lại. Sau đó, nếu tôi chuyển sang chân dung, tôi thì không. Sau đó, nếu tôi chuyển về cảnh quan, tôi sẽ nhận được cuộc gọi lại.
Có ai có ý tưởng gì đang xảy ra không?
đây là cách ment của nó để làm việc. Nếu gọi init trên một bộ nạp đã tải dữ liệu của nó, nó sẽ chỉ trả về dữ liệu đó thông qua onLoadFinished. Bạn nên xem http://developer.android.com/reference/android/app/LoaderManager.html#restartLoader(int, android.os.Bundle, android.app.LoaderManager.LoaderCallbacks) để tải lại dữ liệu –
Dori