안드로이드 개발 질문/답변
(글 수 45,052)
아이스크림 샌드위치 버전부터는 메인쓰레드에서 http통신을 하면 안된다고해서요
아래처럼 http통신하는부분을 쓰레드 class하나 만들어서 빼고 메인에서 호출하게 하게했는데요
이렇게하면 다른버전에서는 되는데 아이스크림 샌드위치에서는 안되네요
메인쓰레드에서 돌리지 말라는 말이 제가 아래 쓴방법이 맞는건가여? 아니면 다른 방법이 있는건가여?
public class login extends Activity
{
{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
.........
Thread t14 = new Thread(new thread2()); <---밑에 쓰레드 클레스 호출부분
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
.........
Thread t14 = new Thread(new thread2()); <---밑에 쓰레드 클레스 호출부분
t14.start();
Intent intent = new Intent(login.this, tabsView.class);
intent.putExtra("uid", uid);
intent.putExtra("uname", uname);
intent.putExtra("ugrade",ugrade);
startActivityForResult(intent, 1);
finish();
}
Intent intent = new Intent(login.this, tabsView.class);
intent.putExtra("uid", uid);
intent.putExtra("uname", uname);
intent.putExtra("ugrade",ugrade);
startActivityForResult(intent, 1);
finish();
}
class thread2 implements Runnable <--새로운 쓰레드 만듦
{
public void run() {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(http://mobile + "login.asp");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("uid", zlogin.et1.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("upwd", zlogin.et2.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
.......
}
HttpPost httppost = new HttpPost(http://mobile + "login.asp");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("uid", zlogin.et1.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("upwd", zlogin.et2.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
.......
}
}




문법상으로는 문제가 없는것 같은데요 ~~ 궁금한점은 왜 화면을 넘기는 동시에 스레드를 돌리시는 건지~~~