Hi,

Are you doing this from the UI thread? I think you do.

If so, you need to move your networking code to a worker thread. Two easy ways to do this are: AsyncTask and IntentService (and Mark Murphy's enhanced version of the latter, WakefulIntentService).

Second, if you're not targeting specifically WiFi, you need a WakeLock, not a WifiLock.

WakeLock keeps the device awake, while WifiLock keeps WiFi enabled. The former usually implies the latter.

Your permission (android.permission.WAKE_LOCK) is for WakeLock, as well.

-- Kostya

02.11.2010 17:16, Ferran Garriga Ollé пишет:
I'm trying to download a large .zip file from a web server but I have
a weird behaviour, the description is:

  - I'm executing the code in the device emulator, API level 3 (version
1.5) with an SD card of 512MB. I start the device with "Wipe data
user"
  - The length of the size from conexion.getContentLength() is 7012725
  - The server address is localhost (10.0.2.2), but I've tried with an
external server and the behaviour is the same. I've double checked
that I can download the file through a web browser.
  - I have these permisions in the manifest file:

     <uses-permission android:name="android.permission.INTERNET"></uses-
permission>
     <uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-
permission>

The error:

  - It starts downloading the file, I can see the text 10, 20, 30, 40,
50 and then it stops at 60.
  - After a while, the emulator reboots itself.

Workarounds:

   - About the possible wifi lock, what I've done is add this
permission "android.permission.WAKE_LOCK" and then this piece of code,
but with exactly the same behaviour:

     WifiManager.WifiLock wifilock;
     WifiManager manager = (WifiManager)
getSystemService(Context.WIFI_SERVICE);
     wifilock = manager.createWifiLock("wifilock");
     wifilock.acquire();
     ...
     wifilock.release();

Here is the code, that it's being executing in a separate thread:

     private void downloadData(){
                try{
                        Log.v(TAG, "downloading data");

                        URL url  = new URL("http://10.0.2.2/1.zip";);
                        URLConnection conexion = url.openConnection();
                        conexion.connect();

                        int lenghtOfFile = conexion.getContentLength();

                        Log.v(TAG, "lenghtOfFile = "+lenghtOfFile);

                        InputStream is = url.openStream();

                        File testDirectory = new
File(Environment.getExternalStorageDirectory()+"/testDirectory/");
            if(!testDirectory.exists()){
                testDirectory.mkdir();
            }

                        FileOutputStream fos = new 
FileOutputStream(testDirectory+"/
files.zip");

                        byte data[] = new byte[1024];

                        int count = 0;
                        long total = 0;
                        int progress = 0;

                        while ((count=is.read(data)) != -1)
                        {
                                total += count;
                                int progress_temp = (int)total*100/lenghtOfFile;
                                if(progress_temp%10 == 0&&  progress != 
progress_temp){
                                        progress = progress_temp;
                                        Log.v(TAG, "total = "+progress);
                                }
                                fos.write(data, 0, count);
                        }

                        is.close();
                        fos.close();

            Log.v(TAG, "downloading finished");

                }catch(Exception e){
                        Log.v(TAG, "exception in downloadData");
                        e.printStackTrace();
                }

        }

** more log description:**

     00:00 It starts downloading:
     V/iPhoto  (  853): downloading data
     V/iPhoto  (  853): lenghtOfFile = 7732809
     V/iPhoto  (  853): total = 10
     V/iPhoto  (  853): total = 20
     V/iPhoto  (  853): total = 30
     V/iPhoto  (  853): total = 40
     V/iPhoto  (  853): total = 50 (round 00:05)
     ->  Here it stops and the DDMS disconnects the device immediatly

     03:40 It finish the download (not always) and the device reboots
on its own:
     I/Process (  595): Sending signal. PID: 595 SIG: 3
     I/dalvikvm(  595): threadid=7: reacting to signal 3
     D/dalvikvm(  722): GC freed 2193 objects / 135808 bytes in 176 sec
     V/iPhoto  (  853): total = 60
     I/dalvikvm(  595): Wrote stack trace to '/data/anr/traces.txt'
     I/ActivityManager(  595): Process
com.google.android.apps.maps:FriendService (pid 778) has died.
     I/ActivityManager(  595): Process com.android.mms (pid 732) has
died.
     V/iPhoto  (  853): total = 70
     V/iPhoto  (  853): total = 80
     V/iPhoto  (  853): total = 90
     V/iPhoto  (  853): total = 100
     V/iPhoto  (  853): downloading finished
     V/iPhoto  (  853): thread finish loading
     I/Process (  595): Sending signal. PID: 595 SIG: 9
     I/ActivityThread(  757): Removing dead content provider: settings
     I/ActivityThread(  748): Removing dead content provider: settings
     I/ActivityThread(  722): Removing dead content provider: settings
     I/ActivityThread(  700): Removing dead content provider: settings
     I/ServiceManager(  549): service 'package' died
     ... services dieing...
     I/ServiceManager(  549): service 'wifi' died
     E/installd(  557): eof
     E/installd(  557): failed to read size
     I/installd(  557): closing connection
     D/qemud   (  560): fdhandler_event: disconnect on fd 11
     D/qemud   (  560): fdhandler_event: disconnect on fd 12
     E/vold    (  550): Framework disconnected
     I/Zygote  (  554): Exit zygote because system server (595) has
terminated
     I/ServiceManager(  549): service 'simphonebook' died
     I/ServiceManager(  549): service 'isms' died
     I/ServiceManager(  549): service 'iphonesubinfo' died
     I/ServiceManager(  549): service 'phone' died
     D/AndroidRuntime(  949):
     D/AndroidRuntime(  949):>>>>>>>>>>>>>>  AndroidRuntime START
<<<<<<<<<<<<<<
     ... and starting ...

Anyone have any clue? Could anyone try my code and download a zip file
with size round 8MB? Does it works for you?

Thanks, Im completely lost!



--
Kostya Vasilyev -- WiFi Manager + pretty widget -- http://kmansoft.wordpress.com

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to