base on androidasync & lon