2011-09-01 4 views
1

내부 메모리에 저장해야하는 정보가 있습니다. SharedPreferences에서 수행 한 방식으로 키 - 값 쌍 형식으로 저장하려고합니다. 나는 JsonObject를 만들고 그런 식으로 저장하고 검색 할 생각을하고있었습니다. 내부 메모리에 데이터를 키 - 값 쌍의 형태로 저장할 수있는 다른 방법이 있습니까?안드로이드의 내부 메모리에 저장 될 파일에 키 - 값 쌍을 저장하는 방법은 무엇입니까?

감사 선일

+0

는 해시 맵을 사용하려고 ... –

+0

나는 파일에 해시 맵을 저장할 수있는 복합 유형에 대한 기본 유형 및 직렬화 JSON을 사용하여 그런 다음 나중에 검색 하시겠습니까? – sunil

+0

네, 그렇게 할 수 있습니다. –

답변

1

것은 직렬화를 사용하는 것입니다 - 그게 거기에있는 것이다. 대부분의 경우 Serializable을 구현하는 것은 상당히 간단합니다. This Site은 Android 환경에 매우 쉽게 맞출 수있는 직렬화 기본에 대한 훌륭한 자습서를 제공합니다.

HashMap을 생성하면 HashMap을 파일로 직렬화하여 키/값 형식으로 데이터를 쉽게 검색 할 수 있습니다. 거의 모든 라이브러리 컬렉션은 Serializable을 지원하므로 다른 유형의 Map/List도 저장할 수 있습니다.

그래서 사용할 수 있습니까? 직렬화 또는 JSONObject? 이는 효율성이 얼마나 중요한지, 저장하려는 물건이 얼마나 복잡한 지에 달려 있습니다.

일반적으로 가장 큰 비용은 파일에 데이터를 쓰는 실제 작업이므로 JSONObjects는 거의 항상 작고 간단하므로 조금 더 빨리 처리 할 수 ​​있습니다. JSON으로 쉽게 변환 할 수있는 String 또는 Simple Objects를 저장하는 데는 적합합니다. 수십 개의 멤버와 여러 가지 가능한 상태가있는 매우 복잡한 클래스가있는 경우 직렬화를 사용하는 것이 더 간단하고 효율적일 수 있습니다. 대부분의 경우 이러한 옵션 간의 실제 비용 차이는 무시해도되고 여러 번 여러 번 읽고 작성해야하는 경우에만 중요합니다.

그래서 (당신은 심지어 JSON 개체에 직렬화 된 객체를 저장할 수 있습니다!)

0

아주 기본의 SQLiteDatabase는 일을 할 것입니다. 자습서의 모음이 있습니다. 필요한 것은 _id, key, value의 3 개의 열이있는 단일 테이블입니다.

개인적으로는 This Tutorial을 좋은 출발점으로 생각했습니다. 자세한 내용은

public static void set(Context context, String key, String value); 
public static String get(Context context, String key); 

: 정말 쉬운 인생을 만들 것입니다 다음과 같은 방법 서명을 작은 클래스를 생성,이 같은 간단한 GET/설정 상황에 있도록

DB 년대는 항상 볼이 굴러 얻을 수있는 환경이 필요합니다 복잡한 객체는, Parcelable 또는 직렬화 사용 : Object 데이터를 저장하는 표준 자바 방법 Th이

public static void set(Context context, String key, Serializable value); 
public static Serializable(Context context, String key); 
+0

고마워요.하지만 이미 데이터베이스와 SharedPreferences에 대해 알고 있습니다. 사용자가 응용 프로그램의 캐시를 지우더라도 해당 정보가 손실되지 않아야하므로 내부 메모리에만 정보를 저장해야합니다. – sunil

+0

SQLiteDatabase 사용 *은 내부 메모리에 저장됩니다. 캐시 부분에 저장할지 여부를 선택할 수 있습니다. – Dave

+0

죄송합니다. 귀하의 질문에 귀하가 데이터를 '불명확 할 것'으로 요구했다고하지 않았습니다. DB 삭제를 막을 수 있는지 확신 할 수 없지만, 시스템 앱에서만 사용할 수 있다고 생각합니다. –

관련 문제