2011-08-31 36 views
13

Tôi muốn đạt được điều đó khi tải xuống, nó có thể bị tạm dừng, do người dùng dừng lại. Làm thế nào tôi có thể đạt được điều này với DownloadManager?Làm cách nào để tạm dừng sử dụng DownloadManager?

+0

Tôi cũng muốn biết điều này. Tôi đã cố gắng để ngăn chặn tải với phương pháp loại bỏ (id), và nó có vẻ làm việc nếu chúng ta kiểm tra nó trong bảng tải xuống, nhưng trong khu vực thông báo nó vẫn được hiển thị như tải xuống. – morphium

+0

Tải xuống bảng Tôi đang nói về có thể truy cập bằng cách sử dụng này: Intent i = new Intent(); \t \t \t \t i.setAction (DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity (i); – morphium

+0

Tôi mới sử dụng Android, nhưng tôi đã tạo Trình quản lý tải xuống bằng cách sử dụng C++ Qt, Đây là liên kết đến việc triển khai của tôi, nếu bạn định tự mình thực hiện trình quản lý tải xuống thì điều đó có thể hữu ích. http://kunalmaemo.blogspot.com/2010/05/simple-download-manager-in-qt-with.html – Kunal

Trả lời

1

Bạn có ý định thực hiện việc này trong ứng dụng web không?

Tôi cũng đang suy nghĩ về cùng một điều. Điều này có thể là có thể với flash hoặc sliverlight, vv, nhưng trong HTML thuần túy?

Ở phía máy chủ, chúng tôi có thể sử dụng RandomAccessFileReader (Apache) hoặc FileReader tương tự (tính bằng byte) để truy cập tệp và ghi vào luồng đầu ra. Chúng tôi cũng có thể nhớ số lượng byte đã được người dùng tải xuống trong phiên trước đó. Nhưng vấn đề là không có cách tiêu chuẩn để lưu tập tin vào đĩa trong hệ thống tập tin địa phương của khách hàng. Bạn có thể sử dụng ActiveX Object trong IE để viết một số tập tin cung cấp nó là một tập tin tuần tự (văn bản thuần túy) và không phải tập tin nhị phân (như mp3, flv, vv). Nhưng ActiveX này không phải là một giải pháp. Vì vậy, bạn có thể cần phải thiết kế một cái gì đó như 'Downloader' cho trang web của bạn. Cũng giống như Youtube Downloader.

+1

Tôi đang nói về API cho DownloadManager trong Android. Tôi muốn biết DownloadManager có api về tạm dừng/tiếp tục. –

2

Có thể là "tạm dừng" không thực sự cần thiết đối với bạn? Khi DownloadManager thực tế, doesn't need to pause sẽ được tiếp tục.

Thay vào đó bạn có thể bị xáo trộn khi tiếp tục? Xem nếu điều này giúp:

how to resume an interrupted download đâu là giải pháp đang thực hiện một tiêu đề yêu cầu Phạm vi ...

// Open connection to URL. 
HttpURLConnection connection = 
     (HttpURLConnection) url.openConnection(); 

// Specify what portion of file to download. 
connection.setRequestProperty("Range", "bytes=" + downloaded + "-"); 
// here "downloaded" is the data length already previously downloaded. 

// Connect to server. 
connection.connect(); 

Trừ khi bạn cần phải thực sự cho phép "tạm dừng" (vì chuyển sang ưu tiên tập tin tải về, duy trì một danh sách hoặc một cái gì đó khác phức tạp hơn) và không chỉ cung cấp khả năng tiếp tục, mà nên giúp đỡ.

5

Bạn có thể remove a download từ hàng đợi. Sau đó, bạn có thể khởi động lại nó, chuyển qua tiêu đề HTTP Range khi thêm lại nó vào hàng đợi (như TryTryAgain đã đề cập). Tôi không tin rằng điều này hiện có thể được thực hiện dễ dàng hơn.

+1

Tôi đã thử ý tưởng của bạn nhưng có vẻ như nó không hoạt động hoặc tôi đã bỏ lỡ điều gì đó quan trọng. Tôi nhận được các byte dữ liệu đã được tải xuống và tôi đổi tên tệp để ngăn chặn việc xóa khi thực thi downloadmanager.remove (referenceId) vào Trình quản lý tải xuống. Và tạo lại yêu cầu với request.addRequestHeader ("Range", "bytes =" + bytesStored + "-"); và nạp lại lần nữa để tạo lại tải xuống. Bạn có thể giúp tôi về điều đó không? – Cjames

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