아래와 같이 AsyncTask 를 상속받은 클래스를 만들었습니다.
한개의 AsycnTask에서 조건에 따라 여러가지 처리를 하고 싶은데, 가능한가요?
지금처럼 params[0]을 key값으로 잡고, 두번째를 url로 잡아놓기는 하였는데
생각해보니 onPostExecute 에서 result로 받는 값이 daumapi인지, naverapi인지 확인이 불가능할 거 같습니다.
물론 전역변수를 두어 확인을 할 수 있다지만, 비동기 호출이라 순서대로 결과값을 받아온다는 보장이 있을지도 의문이구요.
AsyncTask는 복잡해보여 사용하지 않다가, 지금보니 매우 유용할 것 같네요.
AsyncTask 사용 관련 노하우를 전해주시면 감사하겠습니다.
MyAsyncTask myAsyncTask = new MyAsycnTask();
myAsyncTask.execute("daumapi", "http://~~~");
public class MyAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String str = "";
if("daumapi".equals(params[0])){
try {
HttpGet get = new HttpGet(params[1]);
HttpClient client = new DefaultHttpClient();
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
str = EntityUtils.toString(resEntityGet);
} catch (Exception e) {
e.printStackTrace();
}
} else if("naverapi".equals(params[0])){
// 별도 처리
}
return str;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
// 결과값 처리
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}