把listener分离