I don't think that the current cn1 native map implementation has an 
asynchronous version of functions for transforming screen position from/to 
geo position. 
Anyway, there is something I am not sure to understand in how CN1 
invokeAndBlock 
works. I thought that with an invokeAndBlock call, the whole app process 
was paused until what is in the block complete (so if it is a call to a 
native android call like here, it will wait for android to answer befor 
pursuing). So how can this result into nested mutiple invokeAndBlock calls? 
once the first  invokeAndBlock call is called (by the calcScreenPosition of 
the first marker of the map), wouldn't the process wait for the android 
answer before pursuing to the next calcScreenPosition (for the next marker) 
that will be processed with an invokeAndBlock too, that should block any 
further line of code /loop step to be executed until android answer and so 
on...?

On Monday, August 13, 2018 at 6:31:54 AM UTC+2, Shai Almog wrote:

> You will notice in the stack trace several calls to calcScreenPosition 
> which trigger native synchronous calls and effectively call a deep nest of 
> invokeAndBlock.
> What happens is this:
>
> - You ask for screen coordinates
> - Map cn1lib goes into Android and asks for this but because this needs to 
> run on the native android thread it uses invokeAndBlock to wait for the 
> Android native thread
> - Android takes a while to complete the answer 
> - While Android is taking its time you ask for screen coordinates again 
> and again...
>
> This ends up nesting invoke and block calls which creates problems after 
> some depth. It's a powerful tool but it's meant for coarse things not 
> things you do often. I'm not sure if the current maps have an asynchronous 
> version of the API but if it does you need to use that API. If not we'll 
> need to add such an API.
>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to codenameone-discussions+unsubscr...@googlegroups.com.
Visit this group at https://groups.google.com/group/codenameone-discussions.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/5f472865-69b7-4c70-b54f-c37ec89147ca%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to