안드로이드 프래그먼트 onCreate에 와일문 사용시 화면 멈춤현상

조회수 1278회
public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        preferences = getActivity().getSharedPreferences(PreferencePutter.PREF_FILE_NAME, Activity.MODE_PRIVATE); 



        if (NetworkUtil.getConnectivityStatusBoolean((getActivity()))) {   
            //네트워크 연결 상태를 판단

            request();         // 서버에 데이터 요청

            while (!flag) {        // 플래그변수가 트루일때 빠져나옴
            }
            flag = false;            // 플래그변수를 다시 초기화


        } else {
            setLayoutWithout_Net();    // 네트워크 연결이 없을때 불러올 화면
        }

    }

안녕하세요. 월요일부터 질문을 올리네요.. 몇일간 같은 문제로 해결중입니다.. ㅜㅜ 롤리팝 이하버전까지는 사용시 문제가 없었는데 마시멜로부터 로그인 이후 화면이 멈추는 현상이 발생하고 있습니다..

플래그변수는 boolean 형으로 전역변수로 사용중이고, 첫 초기화상태는 false 상태입니다. 로그인 이후 화면에서 onCreate 부분에 while 부분 때문에 화면 멈춤현상이 생기는 것 같습니다.

위 소스에서 while문은 서버에 요청한 데이터들을 다 받아와 질때까지 대기하는 조건으로 만들어 놓은 부분입니다.

데이터가 다 받아와지면 플래그변수가 요청 함수에서 트루로 값을 바꾸게 되며 와일문을 빠져나와서 여기에는 따로 적지 않았지만, 아래 onCreateView를 통해 값들을 화면에 뿌려지게 됩니다.

마시멜로 버전에서 릴리즈 모드에서만 이런 멈춤현상이 있는데요, 제 생각으로는 while문에서 빠져나오지 못하여 무한루프로 인한 화면 멈춤현상으로 생각됩니다.

현재 while문을 지워버리면 마시멜로에서도 정상작동이 되지만 로그인 이후 값이 바로 화면에는 안뿌려지네요.

이게 제가 처음부터 작업한 소스가 아니라서 설명이 명확하지 않아서 바로 이해가 되실지 모르겠습니다만, 추측성 답변이라도 좋으니 아는부분이 있으시다면 답변해주시면 감사하겠습니다.

긴 질문 읽어주셔서 감사합니다. 날이 많이 추워졌는데 따뜻하게 입고 출퇴근 하시길..

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.