I've been a blackberry user for the past 6 years. I've convinced myself to make the switch to an Android device. I have already started some Android development so having an actual android device would be a bonus.
My question: How exactly does push-email works in non blackberry phones? Here is what I have gathered with some deductive reasoning, but please correct me: on BB, there is the Blackberry Internet Service, or Blackberry Enterprise Service. They are servers that RIM controls, and they pool your email accounts (whether it is a gmail account or imap accounts on your own linux boxes) for new emails. Once a new email arrives, they push that email to your phone. They know how/where your phone is (its IP address or another unique characteristic) because every time you subscribe to a GPRS/3G antenna your mobile operator notifies BB that customer X with phone Y can be reached at address Z.
Now what happens in a non-BB scenario? How does my own linux server running imap (say dovecot) knows how to contact my mobile phone to "push" the new emails?
After reading a bit I stumbled upon IMAP IDLE, which from what I understand is an IMAP command that the client (my mobile phone in this instance) uses to say to the server: "Hey , i'm client X, and my address is Y, so if any new email comes push it here".
Here is where I'm gradually losing understanding: Does this mean that each time I switch from one mobile antenna to the next (say i'm driving down the road) my phone will send a new IMAP IDLE command to my dovecot server saying "Hey, my contact address has changed, please use this one".
What happens when you are using both WIFI and 3G? Does your phone issue two IMAP IDLE commands?
Finally, do all mobile phones (with a data plan) have unique IP addresses? If not (say the telco NATs you) how can my imap server initiate a communication to my device?
As you can see I'm a bit lost and I would be grateful for some more information.