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

버튼을 두번 눌러야 정상적으로 작동됩니다.

0 추천
 public void mOnClick(View v) { // 로그인 버튼을 눌렀을 때의 동작 정의
  // 아이디와 패스워드 입력 값 불러오기
  TextView ID = (TextView) findViewById(R.id.EditId);
  TextView PW = (TextView) findViewById(R.id.EditPW);
  String id = ID.getText().toString();
  String pw = PW.getText().toString();
  String URL = "---" + "/" + id + "/" + pw + "/"
    + "---.txt";
  DownloadThread dThread = new DownloadThread(URL, mSdPath
    + "/passkeeper/auth/---.txt");
  dThread.start();

  try {
   FileInputStream fis = new FileInputStream(mSdPath
     + "/passkeeper/auth/---.txt");
   byte[] data = new byte[fis.available()];
   while (fis.read(data) != -1) {
    ;
   }
   if (new String(data).equals(---)) {
    Intent intent = new Intent(this, PasswordListActivity.class);
    startActivity(intent);
    Toast.makeText(LoginActivity.this, "로그인을 성공했습니다.",
      Toast.LENGTH_LONG).show();
   }
   fis.close();
  } catch (FileNotFoundException e) {
   Toast.makeText(LoginActivity.this, "인증 과정에서 오류가 발생했습니다.",
     Toast.LENGTH_LONG).show();
  } catch (Exception e) {
   ;
  }
 }

텍스트뷰에 ID와 비밀번호를 입력하면 그에 따른 URL에서 인증 정보가 들어있는 텍스트 파일을 다운로드하고,

 

파일의 값을 읽어 일치하면 다음 액티비티로 넘어가는 앱입니다.

 

파일이 미리 다운로드되어있는 경우(두번째 실행 등의) 한번만 눌러도 잘 실행되는데(로그인버튼을)

 

파일이 없어서 다운로드후 일치여부를 확인할 때는 꼭 버튼을 두번 눌러야 다음액티비티로 넘어갑니다.

 

처리속도가 느린 것이 아니고 두번을 눌러야먄 되더군요... 왜 그런지 도저히 모르겠습니다ㅠㅠ

토모히 (320 포인트) 님이 2013년 12월 19일 질문

1개의 답변

+1 추천
버튼을 클릭했을때, 인증파일이 있으면 인증성공하고 다음 액티비티로 가도록 되어져 있습니다.

원하시는 동작을 하시고 싶으시면 파일받는 쓰레드에서 파일을 모두 다 받으면,

그 후에 인증파일을 검사하고 액티비티 이동하시도록 코딩을 하셔야 합니다.

 

쓰레드동작을 소스 앞단에 넣었다고 해서 동작이 순서대로 진행되지 않습니다. 그래서 쓰레드 인거죠.
철수야안녕 (6,120 포인트) 님이 2013년 12월 20일 답변
...