2014-12-11 3 views
0

intent 활동간에 데이터를 전달하는 방식이 마음에 들지 않습니다. 중복 된 코드가 생성됩니다. 활동 A -> B 및 B -> C 및 경우에 따라 C -> D에서 데이터를 패싱하면 코드 오류가 발생하기 쉽습니다. 원시 데이터 유형과 비 기본 데이터 유형을 모두 전달하고자합니다. 코드 품질에 대한 타협없이 어떻게 달성 할 수 있습니까?활동간에 데이터를 효율적으로 전달하는 방법은 무엇입니까?

답변

0

당신은 객체를 저장하고 그 싱글 톤 클래스의 인스턴스를 얻어서 다른 활동을 검색하는 싱글 톤 클래스를 사용할 수 있습니다.

참조 : http://developer.android.com/guide/faq/framework.html#3

+1

응용 프로그램 개체에서 싱글 톤을 결정하기 전에이 내용을 읽으십시오. 그것은 당신을 위해 잘 작동 할지도 모르지만, 다만 가능한 문제점을 인식하십시오. http://www.developerphil.com/dont-store-data-in-the-application-object/ – nPn

0

단순한 데이터 인 경우 SharedPreferences를 사용하여 하나의 활동에 데이터를 저장하고 다른 활동에서 읽을 수 있습니다.

다른 옵션은 데이터를 Application 클래스에 저장하는 것이지만 응용 프로그램 개체가 어느 시점에서 종료 될 수 있기 때문에 공유 환경 설정에 저장 한 내용의 캐시 된 복사본이어야합니다.

내가하는 일은 저장 및로드 (및 Application 클래스의 캐싱)를 처리하는 PersistData 클래스의 싱글 톤 인스턴스를 단일 개체로 가지는 것입니다.

대거를 사용하여이 객체를 삽입했지만 저장/데이터 읽기가 필요했습니다. 여기

내가이에서

best practice to share global variables between activities

(미안 해요이 검색 시간을 소비했다) 제안하고있는 무슨 설명의 더 나은 일을 관련 질문에 만든 다른 답변에 대한 링크입니다 당신은 그냥 만드는 두 통화가 종료 :

를 전송하려는 데이터가 활동에서를, 당신은

persistData.saveUserId(userId); 
같은 활동에서

당신이 뭔가를 가지고있는 데이터를 수신 할 :

String userId = persistData.readUserId(); 
+0

된 SharedPreferences는 쌍의 개념을 사용합니다. 우리는 값을 읽을 필요가있을 때마다 널 또는 빈 문자열을 검사해야하는데, 결과적으로 중복 된 코드가 많이 생깁니다. –

관련 문제