2010-06-16 27 views
6

Tôi đã tìm thấy một mẫu để tải về một tệp dữ liệu lớn tại liên kết sau, http://code.google.com/p/apps-for-android/source/browse/#svn/trunk/Samples/DownloaderĐể tải xuống một tệp lớn, phương pháp nào tốt hơn để sử dụng AsyncTask hoặc Chủ đề?

Nó có vẻ là khá đẹp (tôi chưa thử nghiệm nó). Nhưng tôi cũng đã đọc một số bài viết trong stackoverflow để làm điều tương tự bằng cách sử dụng lớp AsyncTask, không sử dụng lớp Thread như mẫu trên.

Điều tôi muốn biết là tôi nên sử dụng điều gì để tải xuống tệp? Và nếu AsyncTask tốt hơn, bạn sẽ chỉ cho tôi một mã mẫu?

Trả lời

7

Tuyên bố từ chối trách nhiệm: tôi không phải là nhà phát triển Android, câu trả lời đến từ trải nghiệm chung.

Lớp chủ đề phù hợp nhất cho các hoạt động dài hạn, không phải cho các tác vụ không đồng bộ. Ngoại trừ nếu bạn quản lý nhóm công nhân, nhưng cuộc đời vẫn là chủ đề giống hoặc gần giống như ứng dụng. Hãy xem xét việc tạo ra các sợi là hoạt động đắt tiền.

AsyncTask và những người trợ giúp khác thường dành cho một số hoạt động đơn lẻ mà bạn muốn thực hiện trong nền để không chặn ứng dụng. Chúng thường được quản lý tốt bởi nền tảng và rẻ.

Ý kiến ​​của tôi: sử dụng AsyncTask nếu thỉnh thoảng bạn muốn tải các trang. Nếu ứng dụng của bạn sẽ tải trang tất cả các thời gian trong nền xem xét chủ đề.

+1

Tôi đã viết một câu trả lời, nhưng đây là những gì tôi sắp viết. Vì vậy, +1. – Cristian

+1

Là một nhà phát triển Android thực tế, tôi chỉ có thể nói hoàn toàn chính xác. Đi với nhiệm vụ async nếu bạn chỉ tải về một tập tin và với một chủ đề hoặc dịch vụ nếu bạn đang tải xuống và tải lên liên tục ... câu trả lời tốt andrey – Janusz

+0

Cảm ơn tất cả mọi người! Tôi sẽ sử dụng lớp AsyncTask. –

0

Hai tùy chọn này có xác suất bằng nhau bị giết trong khi đang tải xuống (khi người dùng chuyển sang ứng dụng khác). Tuy nhiên, AsyncTask ít gây rối. Để tải xuống các tệp lớn, hãy cân nhắc sử dụng Service.

0

AsyncTasks trong phiên bản Android trước 3.0 sử dụng một nhóm luồng trong nền để thực thi tác vụ, nhưng trong các phiên bản sau 3.0, một chuỗi đơn được sử dụng để thực thi AsyncTasks.

Nếu bạn cần thực hiện nhiều yêu cầu cùng một lúc và phiên bản Android của bạn cao hơn 3.0, hãy sử dụng một nhóm chủ đề, nhưng nếu bạn chỉ phải tải xuống một lần (không nhớ phiên bản Android), sử dụng AsyncTask, nó sẽ được thực hiện tại một chuỗi nền đơn mà không có vấn đề gì, dễ dàng hơn việc quản lý một Chủ đề bởi chính bạn.

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