Solve the problem of data synchronization: There are 2 common methods.
(1) Check the data on the server regularly, also called polling.
(2) The phone and the server to maintain a TCP long connection, when the server has data, real-time push to the client, that is, we say push.
Features of mobile wireless networks
Because IP v4 IP is limited, the operator assigned to the mobile phone terminal IP is the operator intranet IP, mobile phone to connect to the Internet, you need to do a network address translation through the operator's Gateway ("Networking Translation,nat"). Simply said that the operator's gateway needs to maintain an external network IP, port to the network IP, port correspondence, to ensure that the intranet phone can communicate with the Internet server.
Most mobile wireless network operators will retire the corresponding entries in the NAT table when there is no data communication on the link for a period of time, causing the link to break.
Implementation of long connection on Android platform
In order not to invalidate the NAT table, we need to make a timed heartbeat to refresh the NAT table entry to avoid being eliminated.
There are 2 common ways to run tasks on Android regularly:
(1) using a Timer
(2) Alarmmanager.
Timer
The Android Timer class can be used to schedule tasks that need to be cycled, and the problem with the timer is that it needs to use WakeLock to keep the CPU awake, which consumes a lot of battery power, greatly reducing the phone's standby time. This is not a way to meet our needs.
Alarmmanager
Alarmmanager is an Android-encapsulated module for managing RTC, the RTC (Real time Clock) is a stand-alone hardware clock that can function when the CPU sleeps and wakes the CPU at a preset time when it arrives.
This means that if we use Alarmmanager to perform tasks on a regular basis, the CPU can hibernate normally and wake up for a short time only when the task needs to be run. The Android SDK for the Aurora push is based on this technology.
Android Push Implementation