Use NavigationContext in AsyncRunner
Made AsyncRunner implement DeviceState.Listener