j wrote:
> I am writing a hybrid web/native app and ran into issue.  My app
> downloads a music file via Java code, and needs to update a Javascript
> download progress bar in the WebView in real time.
> 
> My understanding is the only way to call Javascript from Java is via
> the WebView's loadUrl method.
> 
> while ((byteCount = in.read(byteBuffer, 0, BUFFER_SIZE)) != -1) {
>       out.write(byteBuffer, 0, byteCount);
> 
>       cumByteCount += byteCount;
>       int percentDowloaded = (cumByteCount * 100) / contentLength;
>       Log.i(LOG_TAG, "percent: " + percentDowloaded);
>       webview.loadUrl("javascript:updateDownloadProgress('" +
> percentDowloaded + "')");
> }
> out.flush();
> 
> If so, then while calling Java from Javascript is synchronous, calling
> Javascript from Java is always asynchronous since loadUrl is
> asynchronous.
> 
> I notice that all of my webview.loadUrl calls get queued up and don't
> get executed until the whole file has been downloaded.  Is there any
> trick to make the webview execute my javascript immediately instead of
> queuing everything up?

Sure! Use a thread.

>From the looks of your code, my guess is you are doing the download on
the UI thread. Instead, do the download in a background thread, then use
Handler or runOnUiThread() or something to get the loadUrl() calls to
run on the UI thread.

Now, I haven't tried this specifically with WebView and loadUrl(), but
you get the results you are seeing from any regular widgets, so I am
guessing it is the same problem.

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://twitter.com/commonsguy

Android App Developer Training: http://commonsware.com/training.html

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