A system for updating an application without a restart comprising: a processor; and a memory having stored thereon instructions for causing the processor to: execute a first application instance; start a second application instance while the first application instance is still executing, the second application instance including an updated version of the first application instance; transfer state information in a first stage, wherein the first stage occurs during an initialization phase of the second application instance, wherein the first stage includes a transfer of background state information as a first set of state information from the first application instance to the second application instance; declare, by the second application instance in response to completion of the transfer of the first set of state information, readiness for activation; transfer state information in a second stage during deactivation of the first application instance, wherein the state information transfer in the second stage includes a transfer of foreground information, and wherein deactivation includes: transferring the foreground state information as a second set of state information from the first application instance to the second application instance, and releasing, by the first application instance, single-access resources, wherein single-access resources refer to resources which can only be accessed by one application instance at a time; activate the second application instance, wherein activation includes: receiving the second set of state information, and accessing the single-access resources; declare, by the second application instance in response to completion of the activation of the second application instance, that activation is complete; and terminate the first application instance. a processor; and a memory having stored thereon instructions for causing the processor to: execute a first application instance; start a second application instance while the first application instance is still executing, the second application instance including an updated version of the first application instance; transfer state information in a first stage, wherein the first stage occurs during an initialization phase of the second application instance, wherein the first stage includes a transfer of background state information as a first set of state information from the first application instance to the second application instance; declare, by the second application instance in response to completion of the transfer of the first set of state information, readiness for activation; transfer state information in a second stage during deactivation of the first application instance, wherein the state information transfer in the second stage includes a transfer of foreground information, and wherein deactivation includes: transferring the foreground state information as a second set of state information from the first application instance to the second application instance, and releasing, by the first application instance, single-access resources, wherein single-access resources refer to resources which can only be accessed by one application instance at a time; activate the second application instance, wherein activation includes: receiving the second set of state information, and accessing the single-access resources; declare, by the second application instance in response to completion of the activation of the second application instance, that activation is complete; and terminate the first application instance. execute a first application instance; start a second application instance while the first application instance is still executing, the second application instance including an updated version of the first application instance; transfer state information in a first stage, wherein the first stage occurs during an initialization phase of the second application instance, wherein the first stage includes a transfer of background state information as a first set of state information from the first application instance to the second application instance; declare, by the second application instance in response to completion of the transfer of the first set of state information, readiness for activation; transfer state information in a second stage during deactivation of the first application instance, wherein the state information transfer in the second stage includes a transfer of foreground information, and wherein deactivation includes: transferring the foreground state information as a second set of state information from the first application instance to the second application instance, and releasing, by the first application instance, single-access resources, wherein single-access resources refer to resources which can only be accessed by one application instance at a time; transferring the foreground state information as a second set of state information from the first application instance to the second application instance, and releasing, by the first application instance, single-access resources, wherein single-access resources refer to resources which can only be accessed by one application instance at a time; activate the second application instance, wherein activation includes: receiving the second set of state information, and accessing the single-access resources; receiving the second set of state information, and accessing the single-access resources; declare, by the second application instance in response to completion of the activation of the second application instance, that activation is complete; and terminate the first application instance.