Wouldn't it make more sense to see if the SQLite opening fails?


If it fails, wait 20 seconds or so and try again.



On Friday, October 19, 2012 1:46:23 PM UTC-5, Bill Michaelson wrote:
>
> To answer my own question, I think I'm looking for code like that below.
>
> public void waitForExternalStorage()
> {
>     
> while(Environment.getExternalStorageState().equals(Environment.MEDIA_CHECKING))
>     {
>         try { Thread.sleep(1000L); }
>         catch(InterruptedException e) { e.printStackTrace(); }
>     }
> }
>
>
> Alternately, I can wait for a broadcast of Intent.ACTION_MEDIA_MOUNTED.
>
> Have I got the right?  And is there anything else I should be wary of in 
> this start-at-boot scenario?
>
> On Friday, October 19, 2012 1:13:43 PM UTC-4, Bill Michaelson wrote:
>>
>> I recently modified an application such that a component Service is now 
>> started upon device boot via RECEIVE_BOOT_COMPLETED.  But when the service 
>> started, I encountered a problem with sqlite opening - a failure that was 
>> critical to the application.  Upon examining adb logcat output, I noticed 
>> messages that announced phases of fsck operating, and implying that fsck 
>> did not complete until after my sqlite open failure.  I assumed that the 
>> underlying file was inaccessible because my app started too early relative 
>> to fsck.  Based on this hunch, I inserted a 5 second Thread.sleep() into 
>> the start sequence.  This seems to have solved the problem.
>>
>> But I am unsatisfied for two reasons:
>>
>> 1) My fix is non-deterministic.  There is no guarantee that 5 seconds 
>> will always be adequate, or theoretically, that any arbitrary delay is 
>> sufficient.
>> 2) I have not absolutely determined a causal relationship between the 
>> fsck and the open failure.
>>
>> Ideally, I will delay start until precisely the moment that the OS and 
>> supporting processes are adequately prepared.
>>
>> So I seek advice from a more imaginative, knowledgeable or experienced 
>> developer.
>>
>> TIA
>>
>>

-- 
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