Android InputStream Internet Disconnect

hlasů
7

V mém Android programu, mám nějaký kód, který stáhne soubor. Tato metoda funguje, ale protože na mobilní telefon, můžete odpojit kdykoli, musím změnit, že to udělat znovu připojí a obnoví stahování, když jste v půlce a někdo volá / ztratíte buněk příjem / etc. Nemůžu přijít na to, jak detekovat InputStream přestal pracovat. Viz níže uvedený kód:

InputStream in = c.getInputStream();

    byte[] buffer = new byte[8024];
    int len1 = 0;

    while ( (len1 = in.read(buffer)) > 0 ) {
        Log(-+len1+- Downloaded.);
        f.write(buffer,0, len1);
        Thread.sleep(50);
    }

Když jsem ztratil připojení k internetu, Můj log ukazuje:

Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -8024- Downloaded.
Log: -6024- Downloaded. (some lower number)

A pak se můj program právě visí na while ((len1 = atd musím udělat to tak, když se na internetu odpojen čekám na internet, které mají být opět připojen a poté pokračovat ve stahování.

Položena 26/02/2009 v 03:37
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Podívejte se zde: http://developer.android.com/reference/java/nio/channels/SocketChannel.html

EDIT (na základě komentáři): http://www.jguru.com/faq/view.jsp?EID=72378

Takže myšlenky na základě výše uvedených .... můžete dát čtení ve vlákně a pravidelně kontrolovat, zda je vlákno se zastavil čtení dat (aktualizovat sdílené proměnné pravděpodobně). Pokud má zabít připojení a nit a vypořádat se s ní však budete potřebovat.

Jinou alternativou je nepoužívat HTTPURLConnection a vypořádat se s kousky, které potřebujete sami sebe.

Odpovězeno 26/02/2009 v 03:44
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more