This question has evolved a bit from the initial one, here's a short info:
I filled up the disk storage on the emulator and got it absolutely useless - the process android.process.acore is displaying the "... has stopped unexpectedly" dialog in a loop, so nothing can be done on the system. I can't even turn it off with the power button on the right (it's tried to power off for 10 minutes now, logcat is full of exceptions). Great it's an emulator, I wonder what would happen if it was my real device..
Maybe someone can elaborate on the reasons for this behavior - should it be like this?
Here's the initial question, please also refer to my edits:
I'm curious about handling a random situation such as running out of disk storage on an Android device.
I looked over the examples on developer.android.com and I see they don't even bother to do exception handling.
I can see that when it comes to SQLite classes, there are a couple of exceptions, such as SQLiteOutOfMemoryException, but I can't find any information when and how to handle these scenarios.
Does anyone have experience with:
- bulletproofing an app for such an edgy situation
- ways to test this on an emulator
- feedback from frustrated users (maybe heard of any frustration with the example-apps or even core apps..?)
Thanks in advance for your time guys.
[Edit]
I also run into this bite on Android issue tracker:
http://code.google.com/p/android/issues/detail?id=1653
It's kind of mysterious.. and seems it's a ghost since 2008.
[Edit2]
Alrite, with the advice from the comments: I just did a test using:
dd if=/dev/urandom of=file
with parameters bs and count chosen to fit the remaining space,
and filled the /data partition.
How amazed I am that Google Maps just crashed on the SQLiteFullException. Actually all the apps crash - even Phone.
Is it true that nobody handles those exceptions? Is it ok that those applications just get killed with the "..has stopped unexpectedly"?