마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask 질문 드립니다.

0 추천
private class regIDInsertTask extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
loagindDialog = ProgressDialog.show(Authentication_Password.this,
"키 등록 중입니다..",
"Please wait..", true, false);
}
@Override
protected Void doInBackground(String... params) {
HttpPostData(params[0], params[1]);
return null;
}
protected void onPostExecute(Void result) {
loagindDialog.dismiss();
}
}
public void HttpPostData(String reg_id, String pnum) {
try {
// --------------------------
// URL 설정하고 접속하기
// --------------------------
URL url = new URL("...gcm/gcm_reg_insert.php"); // URL
// 설정
HttpURLConnection http = (HttpURLConnection) url.openConnection(); // 접속
// --------------------------
// 전송 모드 설정 - 기본적인 설정이다
// --------------------------
http.setDefaultUseCaches(false);
http.setDoInput(true); // 서버에서 읽기 모드 지정
http.setDoOutput(true); // 서버로 쓰기 모드 지정
http.setRequestMethod("POST"); // 전송방식은 POST
// 서버에게 웹에서 <Form>으로 값이 넘어온 것과 같은 방식으로 처리하라는 걸 알려준다
http.setRequestProperty("content-type",
"application/x-www-form-urlencoded");
// --------------------------
// 서버로 값 전송
// --------------------------
StringBuffer buffer = new StringBuffer();
// post data 구성하는 부분
buffer.append("reg_id").append("=").append(reg_id).append("&"); // php
// 변수에
// 값
// 대입
Log.e("TAG======33333333333333333", reg_id);
buffer.append("pnum").append("=").append(pnum);
Log.e("TAG======44444444444444444", pnum);
OutputStreamWriter outStream = new OutputStreamWriter(
http.getOutputStream(), "UTF-8");
PrintWriter writer = new PrintWriter(outStream);
writer.write(buffer.toString());
writer.flush();
// --------------------------
// 서버에서 전송받기
// --------------------------
InputStreamReader tmp = new InputStreamReader(
http.getInputStream(), "UTF-8");
BufferedReader reader = new BufferedReader(tmp);
StringBuilder builder = new StringBuilder();
String str;
while ((str = reader.readLine()) != null) {
Log.e("TAG======1111111", str);
builder.append(str + "\n");
}
myResult = builder.toString();
Log.e("TAG======222222", myResult);
} catch (MalformedURLException e) {
Log.e("TAG======", "에러1");
//
} catch (IOException e) {
Log.e("TAG======", "에러2");
//
} // try
} // HttpPostData
 
 
------ 질문 ---------
AsyncTask 이것을 여러 액티비티에서 사용을 합니다. 그런데 제가 구현 능력이 떨어져서
 
각각의 액티비티마다 사용을 하게 되니깐 소스가 계속 중복되는것이 지저분해서 여러분께 여쭈어봅니다.
 
다른 class에서 불러오기 하고 싶은데 어떻게 처리를 해야하는지 간단한 소스라도 알려주시면 감사합니다 ㅠ.ㅠ

 

이전이후 (280 포인트) 님이 2013년 3월 2일 질문

2개의 답변

0 추천
해당 클래스를 하나 만들어서 구현하신 다음에

UI 쓰레드에서 인스턴스 생성하시면 됩니다.
익명사용자 님이 2013년 3월 2일 답변
0 추천
제가 답변을 할수 잇는 질문이 있다니 고맙네요.

 

A라는 클래스가 메인UI쓰레드 클레스(엑티비티)이고,

AysncTask를 엑티비티에 다 때려박으시는 모냥인데..

코드도 중복되고 별롭니다..

 

Z라는 클래스를 AsyncTask로 만들으신후 생성자로 적절한 값을 받게 하고

그안에서 분기처리를 하고

A라는 엑티비티에서 new Z클래스(파라미터 전달).excute(); 하시면 됩니다..
익명사용자 님이 2013년 3월 4일 답변
...