[小代码]优化AsynTask

来源:互联网 发布:ubuntu备份文件命令 编辑:程序博客网 时间:2024/05/16 01:46
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  {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login);    /* 调用AsyncTask */    WebServiceClient httpclient = new WebServiceClient(this);  httpclient.execute(ssoURLStr);} @Overridepublic void onLoginActionComplete  (ArrayList<String> arrayList) {/* 读取返回数据 */String Response = arrayList.get(0); /* 在此处理数据 */}}
Step 3 : AsynTask代码实现

public class WebServiceClient extendsAsyncTask<String, Integer, ArrayList<String>> {WebServiceListener listener = null;/*  设定WebServiceListener  */public WebServiceClient ( WebServiceListener listener){  this.listener  =  listener;}@Overrideprotected ArrayList<String> doInBackground(String... params) {ArrayList<String> arrayList = null;/*在这里写下你的连接http代码并获得数据并保存到ArrayList<String>*/return arrayList;}@Overrideprotected void onPostExecute(ArrayList<String> arrayList) {listener.onLoginActionComplete (arrayList);}}



原创粉丝点击