[小代码]优化AsynTask

AsyncTask类能非常方便执行异步任务。
你可能会在activity中创建AsynTask子类来使用它。
这并不是个很好的方案,这可能会导致在不同的activity写多个AsyncTask。

一个好的方案将如下:

Step 1 : 定义返回数据的接口

public interface WebServiceListener {

	public void onLoginActionComplete (ArrayList<String> arrayList);
}

Step 2: 在Activity实现接口

public class LoginActivity extends Activity implements 	WebServiceListener  {

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login);

    /* 调用AsyncTask */
    WebServiceClient httpclient = new WebServiceClient(this);
	  httpclient.execute(ssoURLStr);
}
 	@Override
	public void onLoginActionComplete  (ArrayList<String> arrayList) {
		/* 读取返回数据 */
		String Response = arrayList.get(0); 
		/* 在此处理数据 */
	}
}
Step 3 : AsynTask代码实现

public class WebServiceClient extends
		AsyncTask<String, Integer, ArrayList<String>> {

	WebServiceListener listener = null;

	/*  设定WebServiceListener  */
	public WebServiceClient ( WebServiceListener listener)
	{
  	this.listener  =  listener;
	}

	@Override
	protected ArrayList<String> doInBackground(String... params) {
		ArrayList<String> arrayList = null;
		/*在这里写下你的连接http代码并获得数据并保存到ArrayList<String>*/
		return arrayList;
	}

	@Override
	protected void onPostExecute(ArrayList<String> arrayList) {
		listener.onLoginActionComplete (arrayList);
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值