AsyncTask类能非常方便执行异步任务。
你可能会在activity中创建AsynTask子类来使用它。
这并不是个很好的方案,这可能会导致在不同的activity写多个AsyncTask。
Step 2: 在Activity实现接口
你可能会在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);
}
}