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

액티비티에서 에디트텍스트 값을 받아 쓰레드로 넘기기

0 추천

A액티비티에서 아이디와 패스워드 값을 입력 받고 

버튼을 누르면 값은 서브쓰레드로 보내고, 화면은 B액티비티로 이동하려고 합니다. 

액티비티에서 쓰레드로 값을 이동시킬 때 어떤걸 쓰면 좋을까요? 

액티비티간 데이터 통신하는 인텐트로는 사용 불가한가요? 

핸들러가 필요할까요? 

 

 

현재 A액티비티 코딩 

public class StartActivity extends Activity{
 
//private Handler mHandler;
EditText id;
EditText pw;
 
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_main);
        
       
        
        id = (EditText) findViewById(R.id.ID);
        pw = (EditText) findViewById(R.id.PW);
        
        Button log_pt = (Button) findViewById(R.id.login_bt);
        log_pt.setOnClickListener(new Button.OnClickListener() {
 
public void onClick(View v) {
 
        final String idText = id.getText().toString();
        final String pwText = pw.getText().toString();
        Intent intent = new Intent(StartActivity.this, ImapThread.class);
        intent.putExtra("idText", idText);
        intent.putExtra("pwText", pwText);
   //     startActivitys(intent);
        
        Intent intent2 = new Intent(StartActivity.this, SubActivity.class);
startActivity(intent2);
finish();
        }     
});
}
 
쓰레드
public class ImapThread extends Thread{
 
private Handler mHandler;
 
Intent id = new Intent();
String strid = id.getStringExtra("idText");
 
Intent pw = new Intent();
String strpw = pw.getStringExtra("pwText");
 
//생성자
public ImapThread(Handler handler){
this.mHandler = handler;
}
 
//스레드 정지 시키는 메소드
public void stopForever() {
synchronized (this) {
this.isRun = false;
notify();
}
}
 
//스레드 본체
public void run() {
int i=0;
// while(true) {
try {
while(isRun) {
if(strid == null && strpw == null){
System.out.println("없음");
} else System.out.println(strid+"/"+strpw);
 
GmailClient gmail = new GmailClient();
gmail.setAccountDetails(strid, strpw);
Message mes = new Message();
if( gmail.readGmail().isEmpty()) { 
System.out.println("메일이 없습니다.");
else { 
mes.what = MAIL_ID;
mes.obj = gmail.readGmail();
mHandler.sendMessage(mes);
}
 
try{
Thread.sleep(10000); //10초씩 쉰다.
}catch (Exception e) {}
 
System.out.println("i="+i);
i++;
// isRun = false;
 
} catch (Exception e) {
 
Log.e("IMAP Protocol", e.getMessage(), e);
// Message mes = new Message();
// mes.what = MSG_ID;
// mes.obj = new String("메읽을 읽는데 실패했씁니다.");
//mHandler.sendMessage(mes);
}
}
//}
}
 
 
 
 
 
익명사용자 님이 2014년 6월 1일 질문

1개의 답변

+1 추천
스레드가 따로 클래스로 정의 되어있으니 원하시는 데이터를 생성자에다 넘기면 될 거 같고요

핸들러는 스레드가 종료 된 뒤에 해주는 작업을 넣는게 좋습니다.
노예의집 (23,370 포인트) 님이 2014년 6월 1일 답변
스레드에 아이디와 패스워드 값을 받는 생성자를 선언해서 A액티비티에서 값받아 오라는 얘긴가요? 안드로이드 초보라 자세히 설명 좀 부탁드립니다.
서비스를 위한 이미 스레드 생성자를 선언해준 상태입니다. 어떻게 해야하나요;;;
//생성자
    public ImapThread(Handler handler){
        this.mHandler = handler;
    }
네 말씀하신대로 하시면 됩니다..
스레드에 아이디와 패스워드 값을 받는 생성자를 선언해서 A액티비티에서 값받아 오라는 얘기 입니다.
public ImapThread(Handler handler, String id, String password){
        this.mHandler = handler;
        this.id = id;
        this.password=password;
    }
이런식으로요
...