use main queue only when state change

Use a nonconcurrent queue for update activity