People seem to think that for the iPhone, ‘notifications’ mean ‘not really runing in the background, but merely gets woken up by a server ping’. From a strictly engineering point of view, this might be true, yes, your code is not running. But from a user point of view, what code is running is totally irrelevant. The ‘application’ as a user interaction experience can keep running in the background, do things, and notify you when there’s an incoming call. Where the code is actually running is irrelevant.