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

글로벌 변수로 선언된 변수를 앱 재실행 후 null 값만 반영됩니다. [closed]

0 추천

스레드를 실행시키고 핸들로러 전달 받은 값을 해당 페이지에서 

전역 변수에 담아 재사용 하려고 짜놓은 구조입니다.

일단 소스 일부는

private HashMap userProfile;

이렇게 변수를 선언했고요.

 

@Override
public void handleMessage(Message msg) {
    super.handleMessage(msg);

    if(userProfile==null){
        userProfile = new HashMap<>();
    }else{
        userProfile.clear();
    }
    profile_level = msg.what;
    if(msg.obj instanceof HashMap){
        userProfile = (HashMap)msg.obj;
        Log.i(TAG,"userProfile instanceof  + userProfile);
    }

 

스레드에서 필요한 과정을 진행하고 전달 받은 핸들로 입니다.

전달받은 메시지를 꺼내놓고  해당 페이지에 전역변수에 담아 필요한 곳에서 재사용 하려고 만들었거든요

로그를 찍어보면 어떤 상황에서도 userProfile은 필요한 정보가 잘 담겨 있습니다.

앱 처음 실행 후에도 모두 정상이고요. 질문의 문제점도 처음 실행 하고 작동에서는 문제가 없습니다.

그런데 앱을 재실행.. 사용중 폰 메인 화면으로 나갔다 돌아오면 저 구간까지는 필요한 정보가 변수에 잘 담기는데

클릭 이벤트에서  userProfile 사용하려면 계속 null  값만 전달 됩니다.

 

핸들러로 전달 받아 변수에 담기는 처리 과정은 페이지 로드중에 마지막에 속합니다. ㅠ

사용하는 이벤트도 당연 페이지가 다 로드된 후 클릭 이벤트에서 사용되려고 하는거고요.

무엇이 문제인건지 답을 못찾고 있습니다.

 

저의 짧은 생각으로는 페이지 로드 중 마지막에 변수에 담아 놓는거니까

이후 클릭 이벤트에 저 변수에 담긴 정보를 사용하면 되겠다는 생각으로 만들었는데 잘 안되네요.

 

질문을 종료한 이유: closed
nickeun (540 포인트) 님이 2018년 4월 23일 질문
aucd29님이 2018년 4월 24일 closed
자문 자답인가요? ㄷ static 선언을 안해준게 문제였네요;;
...