A method of synchronizing application data between a mobile device and a remote computing device, the method comprising: for each network of one or more networks: collecting network data regarding a mobile device's current connectivity state to the respective network, wherein the mobile device includes one or more mobile applications including application data; calculating, based on the network data, an opportunity score for synchronizing application data for the respective network; and storing each score in a network database in the mobile device; wherein the network database stores a history of the mobile device's network connections and their state; detecting, at the mobile device, a current connection to a current network; comparing at an opportunity learning engine in the mobile device an opportunity score for the current network and an opportunity score in the network database for one or more other networks to which the mobile device has previously connected, wherein each opportunity score is associated with a particular network; determining by the opportunity learning engine, based on the comparing, whether the current network is a good opportunity network for syncing mobile application data; and in response to determining that the current network is a good opportunity network, sending from the opportunity learning engine a notification that the current network is a good opportunity network for syncing mobile application data to a synchronisation manager which manages and arbitrates synching of the one of more mobile applications; and in response to determining that the current network is not a good opportunity network, not sending from the opportunity learning engine a notification that the current network is a good opportunity network for syncing mobile application data to the synchronisation manager. for each network of one or more networks: collecting network data regarding a mobile device's current connectivity state to the respective network, wherein the mobile device includes one or more mobile applications including application data; calculating, based on the network data, an opportunity score for synchronizing application data for the respective network; and storing each score in a network database in the mobile device; wherein the network database stores a history of the mobile device's network connections and their state; collecting network data regarding a mobile device's current connectivity state to the respective network, wherein the mobile device includes one or more mobile applications including application data; calculating, based on the network data, an opportunity score for synchronizing application data for the respective network; and storing each score in a network database in the mobile device; wherein the network database stores a history of the mobile device's network connections and their state; detecting, at the mobile device, a current connection to a current network; comparing at an opportunity learning engine in the mobile device an opportunity score for the current network and an opportunity score in the network database for one or more other networks to which the mobile device has previously connected, wherein each opportunity score is associated with a particular network; determining by the opportunity learning engine, based on the comparing, whether the current network is a good opportunity network for syncing mobile application data; and in response to determining that the current network is a good opportunity network, sending from the opportunity learning engine a notification that the current network is a good opportunity network for syncing mobile application data to a synchronisation manager which manages and arbitrates synching of the one of more mobile applications; and in response to determining that the current network is not a good opportunity network, not sending from the opportunity learning engine a notification that the current network is a good opportunity network for syncing mobile application data to the synchronisation manager.