As Morrison said, các ...
cú pháp là cho một biến danh sách chiều dài của đối số (urls
nắm giữ nhiều hơn một URL
).
Điều này thường được sử dụng để cho phép người dùng của AsyncTask
làm những việc như (trong trường hợp của bạn) chuyển vào nhiều hơn một URL để tìm nạp trong nền. Nếu bạn chỉ có một URL, bạn sẽ sử dụng DownloadFilesTask
của bạn như thế này:
DownloadFilesTask worker = new DownloadFilesTask();
worker.execute(new URL("http://google.com"));
hoặc với nhiều URL, làm điều này:
worker.execute(new URL[]{ new URL("http://google.com"),
new URL("http://stackoverflow.com") });
Các onProgressUpdate()
được sử dụng để cho các tác vụ chạy nền giao tiến bộ vào giao diện người dùng. Vì tác vụ nền có thể liên quan đến nhiều công việc (một cho mỗi thông số URL), nên có thể xuất bản các giá trị tiến trình riêng biệt (ví dụ: 0 đến 100% hoàn thành) cho mỗi tác vụ. Bạn không phải làm vậy. Nhiệm vụ nền của bạn chắc chắn có thể chọn để tính tổng giá trị tiến trình và chuyển giá trị đó cho onProgressUpdate()
.
Phương pháp onPostExecute()
hơi khác một chút. Nó xử lý một kết quả đơn, từ tập hợp các hoạt động đã được thực hiện trong doInBackground()
. Ví dụ: nếu bạn tải xuống nhiều URL, thì bạn có thể trả về mã lỗi nếu bất kỳ số nào trong số đó không thành công. Thông số đầu vào là onPostExecute()
sẽ là giá trị bất kỳ của bạn trả lại từ doInBackground()
. Đó là lý do tại sao, trong trường hợp này, chúng là cả hai giá trị Long
.
Nếu doInBackground()
trả về totalSize
, thì giá trị đó sẽ được chuyển qua số onPostExecute()
, nơi nó có thể được sử dụng để thông báo cho người dùng điều gì đã xảy ra hoặc bất kỳ xử lý hậu kỳ nào bạn thích.
Nếu bạn thực sự cần phải giao tiếp nhiều kết quả như là kết quả của nhiệm vụ nền của bạn, bạn có thể chắc chắn thay đổi các tham số chung Long
một cái gì đó khác hơn là một Long
(ví dụ một số loại bộ sưu tập).
đọc đây: http://stackoverflow.com/questions/3158730/java- Tham số 3 dấu chấm – star18bit