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

LinkedHashMap 객체를 인텐트로 넘길수 없을까요?

0 추천

정렬된 해시맵의 값을 넘기고 싶은데요..

LinkedHashMap가 intent로 넘겨지지가 않습니다.

검색해보니 넘어간다 하더라도 순서가 다시 뒤죽박죽 되버린다는데..

intent로 넘기지 못할때 좋은 방법 없을까요?

 

//추가

구글링중 스택오버플로를 참고하니

어떤 외쿡인이 동일한 문제의 해답으로

Application에 LinkedHashMap를 저장할 수 있는 getter와 setter를 만들고

intent를 통해서 넘기지말고 Application 클래스를 통해서 관리하라고 하더라구요.

이렇게 하니까 잘되긴합니다만 별다른 문제가 없을까요?

갸아악 (21,260 포인트) 님이 2014년 11월 21일 질문
갸아악님이 2014년 11월 21일 수정

2개의 답변

+1 추천
 
채택된 답변
LinkedHashMap에 Context와 연관된 것 (Activity , View , Bitmap ...) 등을 넣어놓았다면 메모리 릭이 발생할 수 있습니다.

가장 좋은 방법은 LinkedHashMap의 key와 value를 intent에 넣고,

받는 쪽에서 해당 key, value를 꺼내서 LinkedHashMap을 다시 만드는 것입니다.
익명사용자 님이 2014년 11월 21일 답변
갸아악님이 2014년 11월 21일 채택됨
context와 관련없는 일반 데이터형이라면 문제가 없을까요?
intent로 여러개를 보낸다 하여도 받는곳에서는 해당 키값을 어찌 알고 받아야되나요?
익명님 감사드립니다......
0 추천

해결했습니다.

위에 익명님이 말씀하신대로 구현했습니다.

혹시 저와 같으신분 계실까

코드 공유합니다.

보내는 엑티비티
keyArray = new String[testHash.size()];
int i = 0;
for(Integer key : testHash.keySet()) {
keyArray[i] = String.valueOf(key);
intent.putExtra(keyArray[i], testHash.get(key));
i++;
}
// intent.putExtra("hashMap", testHash);
intent.putExtra("keyArray", keyArray);
startActivity(intent);
finish();
 
//받는 엑티비티
        String[] KeyArr = intent.getStringArrayExtra("keyArray");
        for(String key : KeyArr) {
        FileDataInfo data = (FileDataInfo) intent.getSerializableExtra(key);
        Integer mapKey = Integer.parseInt(key);
        mHashMapTemp.put(mapKey, data);
        }
 
갸아악 (21,260 포인트) 님이 2014년 11월 21일 답변
...