[ 
https://issues.apache.org/jira/browse/CB-828?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Olivier Louvignes updated CB-828:
---------------------------------

    Description: 
I'm trying to restore 3000 contacts on a device, since i need to display a 
progress UI, I had to use something like this (SenchaTouch 2 code but you get 
the point).

[CODE]

//forEach contacts as contact...

_.delay(function() {
                                contact.save({callback : function(contact, 
operation) {
                                        d&&console.log(displayName + ' ~ saved 
('+ action +') contact', arguments);
                                        j++;
                                        App.getViewport().mask({message: 
__('restore...'), details: j + '/' + count, progress: j/count, mode: 
'determinate'});
                                        // Last item ?
                                        if(j == count) {
                                                contactStore.clearFilter();
                                                return 
self.afterRestore(callback);
                                        }
                                }});
                        }, 25*i);

[/CODE]

Works quite well in the simulator but i'm getting regular "failed to return 
after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode" on a 
device.

Major issue is that UI gets stuck for minutes, ends up crashing.

Would there be a way to somehow use another thread for theses AddressBook 
operations?

  was:
I'm trying to restore 3000 contacts on a device, since i need to display a 
progress UI, I had to use something like this :

[CODE]

//forEach contacts as contact...

_.delay(function() {
                                contact.save({callback : function(contact, 
operation) {
                                        d&&console.log(displayName + ' ~ saved 
('+ action +') contact', arguments);
                                        j++;
                                        App.getViewport().mask({message: 
__('restore...'), details: j + '/' + count, progress: j/count, mode: 
'determinate'});
                                        // Last item ?
                                        if(j == count) {
                                                contactStore.clearFilter();
                                                return 
self.afterRestore(callback);
                                        }
                                }});
                        }, 25*i);

[/CODE]

Works quite well in the simulator but i'm getting regular "failed to return 
after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode" on a 
device.

Major issue is that UI gets stuck for minutes, ends up crashing.

Would there be a way to somehow use another thread for theses AddressBook 
operations?

    
> iOS contact.save() stucks the UI from updating on heavy load
> ------------------------------------------------------------
>
>                 Key: CB-828
>                 URL: https://issues.apache.org/jira/browse/CB-828
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: iOS
>            Reporter: Olivier Louvignes
>            Assignee: Shazron Abdullah
>              Labels: contacts
>
> I'm trying to restore 3000 contacts on a device, since i need to display a 
> progress UI, I had to use something like this (SenchaTouch 2 code but you get 
> the point).
> [CODE]
> //forEach contacts as contact...
> _.delay(function() {
>                               contact.save({callback : function(contact, 
> operation) {
>                                       d&&console.log(displayName + ' ~ saved 
> ('+ action +') contact', arguments);
>                                       j++;
>                                       App.getViewport().mask({message: 
> __('restore...'), details: j + '/' + count, progress: j/count, mode: 
> 'determinate'});
>                                       // Last item ?
>                                       if(j == count) {
>                                               contactStore.clearFilter();
>                                               return 
> self.afterRestore(callback);
>                                       }
>                               }});
>                       }, 25*i);
> [/CODE]
> Works quite well in the simulator but i'm getting regular "failed to return 
> after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode" on a 
> device.
> Major issue is that UI gets stuck for minutes, ends up crashing.
> Would there be a way to somehow use another thread for theses AddressBook 
> operations?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to