Có vẻ như api replaceCurrentItemWithPlayerItem: sẽ kẹt chuỗi chính trong vài giây, tôi hiểu rằng việc thay thế mục cần thông tin của mục mới có thể mất một chút thời gian để tải trước. Nhưng câu hỏi đặt ra rằng tại sao replaceCurrentItemWithPlayerItem: với một đối tượng mục nil nil cũng sẽ bị mắc kẹt chủ đề chính ?? Nó xảy ra với tôi rằng đôi khi phải mất hơn 5 giây để thay thế một playerItem nil. Tôi tự hỏi tôi có thể làm gì để tránh vấn đề này. Cảm ơn mọi lời khuyên!iOS AVPlayer replaceCurrentItemWithPlayerItem: nil block UI Chủ đề
Trả lời
Tôi gặp phải vấn đề về chuỗi giao diện người dùng chặn tương tự khi tôi sử dụng UICollectionView
để hiển thị và xem trước video trong thư viện ảnh địa phương qua ALAssetLibrary
.
Các cuộn trên video chuyển đổi không phải là suôn sẻ, vì vậy tôi đoán một số phương pháp khối UI thread.Then tôi sử dụng Core Animation
của Instruments
để phân tích chính xác những gì chiếm thread UI .Tại Time Profiler
tôi phát hiện ra rằng replaceCurrentItemWithPlayerItem
cần khoảng 30ms đến thực thi trong chuỗi chính, lớn hơn 16ms (1000/60 (fps)) dẫn đến việc cuộn cuộn.
Để giải quyết vấn đề, trước tiên tôi đã thử đặt replaceCurrentItemWithPlayerItem
vào chủ đề nền bằng GCD, nhưng không hoạt động. Tôi không chắc là vì bản thân Cocoa cần cập nhật giao diện người dùng khi gọi replaceCurrentItemWithPlayerItem
, có nghĩa là giao diện người dùng thread vẫn block.Finally tôi làm cho nó hoạt động bằng cách đặt replaceCurrentItemWithPlayerItem
ở cuối cuộn (các đại biểu func scrollViewDidEndDecelerating(scrollView: UIScrollView)
) .Làm thế nào để di chuyển được suôn sẻ, yep!
Vì vậy, lời khuyên của tôi là rõ ràng: Sử dụng dụng cụ để phân tích chính xác những gì chiếm thread UI
- 1. UI Thread Block
- 2. iOS AVPlayer Play/Pause nút vấn đề
- 3. NSThread block sleepfortimeinterval chủ đề chính
- 4. AVPlayer replaceCurrentItemWithPlayerNó không hoạt động trên iOS 4.3.3+
- 5. iOS: Tải trước video AVPlayer
- 6. Các sự cố phát nhạc trực tuyến trên iOS AVPlayer
- 7. jQuery UI ThemeRoller - Cài đặt chủ đề
- 8. WPF Dispatcher.BeginInvoke và UI/Chủ đề nền
- 9. iOS AudioSessionSetActive() chặn chủ đề chính?
- 10. iOS: SKPaymentTransactionStateRestored originalTransaction == nil
- 11. Phụ đề cho AVPlayer/MPMoviePlayerController
- 12. iOS bắt đầu Chủ đề nền
- 13. IOS AVPlayer sẽ không phát video
- 14. Android AsyncTask onPostExecute tắt chủ đề ui chính
- 15. Asp.net Mvc 2.0 RC Thiết lập Chủ đề CurrentCulture/Ui
- 16. Cách chuyển dữ liệu từ AsyncTask sang Ui Chủ đề
- 17. lợi nhuận containerURLForSecurityApplicationGroupIdentifier Nil trên iOS Simulator
- 18. Tiêu đề phản hồi từ AVPlayer
- 19. Hiển thị phụ đề bằng AVFayer AVPlayer trên OS X
- 20. Nhận thời gian phát video hiện tại trong AVPlayer ios
- 21. Không thể dừng AVPlayer
- 22. Chủ đề 0 luôn luôn là chủ đề chính trong báo cáo sự cố iOS?
- 23. Phát video bằng AVPlayer
- 24. AVPlayer: Âm thanh nền dừng khi nhấn nút trang chủ, nhưng phát với màn hình khóa
- 25. không thể phát nhạc từ thư mục tài liệu qua AVPlayer trong iOS?
- 26. Trình kiểm tra chủ đề chính: API UI được gọi trên một chủ đề nền: - [Đại biểu UIApplication]
- 27. Cách đặt bộ đệm AVPlayer trống trong ios
- 28. Phát lại không dây với AVQueuePlayer/AVPlayer - có thể không?
- 29. IE CSS display: inline-block Rendering vấn đề
- 30. iOS - một chủ đề khác cần gửi reloadData đến maint2read
Thanks mate, bạn đã lưu trong ngày của tôi: D –