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

안드로이드 소켓 관련 질문 입니다.

0 추천
1. FragmentActivity

2. loginFragment

3. mainFragment

3. AsyncTask<-소켓

 

loginFragment를 먼저 띄어서 아이피어드레스와 포트를 FragmentActivity에 넘겨줘서

AsyncTask로 소켓을 연결하여 connect이 되면  mainFrgment로 넘어가고, 아니면 loginFragment에 남아있게 할 것이고, AsyncTask로 받아온 값을 토대로 mainFragment의 UI를 건드리려고 합니다.

과연 위의 방법이 Socket통신하는 부분에 있어서 좋은 방법일까요? 그리고 위의 방법대로 구현이 가능 할까요? AsyncTask에서 mainFragment의 값을 어떻게 변경할 수 있을까요?
익명사용자 님이 2016년 7월 15일 질문
AsyncTask를 이용하신 다면  callback pattern을 사용하셔서 AsyncTask의 처리가 다 끝나고 난 다음에 해당 fragment에서 결과를 처리할 수 있도록 하는 형태로 짜시는 것이 좋다고 봅니다.
아래와 같은 형태를 참고하여 구성하시면 될 듯합니다만...

public class ConnectAsyncTask extends AsyncTask<Object, Integer, Object>{
     
     ConnectAsyncTaskListener listener;

    public void setListener(ConnectAsyncTaskListener listener) {
         this.listener = listener;
    }

     public void doInBackground(Object...params){
           return null; // return yours
     }

    protected void onPostExecute(Object result)  {
           if (listener != null) {
                boolean ok;
                //Check the result
               if (ok) {
                    listener.onSuccess();
               } else {
                    listener.onFail();
               }
           }
    }

     public static interface ConnectAsyncTaskListener {
            public void onSuccess();
            public void onFail();
     }
}


public class FragmentActivity extends Activity {
      
      ConnectAsyncTask task = new ConnectAsyncTask();
      task.setListener(new ConnectAsyncTaskListener() {
             public void onSuccess(){
                  //Show mainFragment
             }

             public void onFail(){
                 //show loginFragment
             }

      }
    
}

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...