5

Tôi muốn biết tải xuống tệp, tác vụ hoặc dịch vụ không đồng bộ nào tốt hơn?Nhiệm vụ không đồng bộ so với dịch vụ để tải xuống dữ liệu

Ứng dụng của tôi có tám nút, một nút bắt đầu một lượt tải xuống đầy đủ (tải xuống có ~ 10MB). Khi người dùng nhấp vào một nút hoặc nhiều hơn để tải xuống dữ liệu thì tốt hơn là sử dụng công việc hoặc dịch vụ không đồng bộ?

Cảm ơn!

Trả lời

5

Trong mọi trường hợp, bạn nên sử dụng AsyncTask vì thậm chí dịch vụ chạy trong luồng chính (GUI) mà không cần kết nối mạng. Việc chạy AsyncTask trong một dịch vụ hay một hoạt động phụ thuộc vào việc bạn có muốn tải xuống đó tiếp tục trong nền hay không.

+0

Cảm ơn @StenSoft, vì vậy nếu các ứng dụng đi vào nền hoặc người dùng thay đổi sang hoạt động khác, tác vụ không đồng bộ dừng lại? – Caaarlos

+1

Không, nhưng không có dịch vụ, toàn bộ ứng dụng có thể bị hệ thống giết bất cứ lúc nào trong nền. – StenSoft

+0

hmm biết tôi hiểu những gì tôi phải sử dụng vào thời điểm nào! Vì vậy, tôi sẽ sử dụng AsyncTask. Bạn đã giải quyết được boubt của tôi, cảm ơn StenSoft !! – Caaarlos

1

AsyncTask - AsyncTask thao tác các chủ đề và/hoặc trình xử lý, nếu bạn có thể làm điều đó tốt hơn với Looper và nội dung tại sao phải bận tâm? AsyncTask được thiết kế để trở thành một lớp trợ giúp xung quanh Thread và Handler, và nó lý tưởng nên được sử dụng cho các hoạt động ngắn (ít nhất là vài giây.) .. Làm thế nào bạn có thể nói trong chế độ sản xuất cho dù sẽ không mất nhiều thời gian? có thể mạng xấu, mạng chậm, mạng bị kẹt, khởi động lại điện thoại - và tất cả những điều này có thể sẽ khiến bạn tải xuống hoặc bị hỏng hoặc chưa hoàn thành .. tôi là người dùng ứng dụng và tôi tức giận khi bị lãng phí khi không có gì ..

nếu bạn hỏi tôi, sử dụng

Dịch vụ - Service được thực hiện để chạy bất kể những gì ứng dụng/màn hình là có thể nhìn thấy và thực hiện nếu giao tiếp với giao diện người dùng nếu chỉ nó có sẵn nếu không tiếp tục với tải về và lưu nó, AsyncTask không cấu thành một khuôn khổ luồng chung. luôn luôn sử dụng đề tài, nó mát mẻ, tất cả chúng ta đều thích nó.

1

tất cả các câu trả lời ở trên đều có điểm tốt. nhưng vấn đề vòng đời là điều quan trọng nhất bạn nên cân nhắc. ví dụ: giả sử bạn sử dụng asyncTask. do đó, người dùng bắt đầu tải xuống và đột nhiên anh/cô ấy xoay màn hình và vì bạn đã gắn vòng đời asyncTask vào activity hoạt động khác asyncTask sẽ bị khởi động và dẫn đến tải xuống 10mb bắt buộc. vì vậy, bạn nên sử dụng serviceasyncTask cùng nhau để duy trì vấn đề về vòng đời và vấn đề về mạng chuỗi giao diện người dùng.

cập nhật: Ý định dịch vụ là một giải pháp tốt hơn bởi vì nó nhận được yêu cầu trong chủ đề riêng của mình và đi ẩn khi nó không liên quan gì đến

Các vấn đề liên quan