혹등혹등
508
2021-01-22 14:42:58 작성 2021-01-22 14:59:59 수정됨
5
162

안드로이드 배열 데이터를 앱이 종료되어도 계속 유지하는 방법



안녕하세요. 안드로이드 앱을 개발중인 대학생입니다!


제가 사진 및 정보를 서버로 전송하는 애플리케이션을 만들고 있는데,

데이터를 전송하다 예외로 인해 전송에 실패해서 사용자가 나중에 올리기로 결정한 경우

해당 정보를 배열에 담아서, 나중에 "알림 확인" 버튼을 클릭하면 해당 정보들이 쭉 노출 되게끔 만들려고 합니다.

앱을 껐다 켜도, "알림 확인" 버튼을 누르면 지금까지 전송하지 못한 정보들을 보여주고 싶습니다.


SharedPreferences 를 사용하려고 했는데 이 아이는 Key,Value를 활용하고

객체나 배열은 담을 수 없다고 들어서 제가 원하는 기능을 구현하기에는 한계가 있다고 느꼈습니다.


어떻게 구현하면 좋을까요? 선배님들의 조언 부탁드립니다!

0
  • 답변 5

  • 혹등혹등
    508
    2021-01-22 14:44:30 작성 2021-01-22 14:44:42 수정됨

    아 SQL Lite로 내부 DB에 저장하는 수밖에 없을까요?

  • Eleutherius
    694
    2021-01-22 14:52:06

    SharedPreferences를 써야된다면 객체를 JOSN String으로 변환하여 저장해 사용 할 수 도 있겠습니다.

    https://stackoverflow.com/questions/7145606/how-do-you-save-store-objects-in-sharedpreferences-on-android


  • 이프얼스와일포
    116
    2021-01-22 16:04:51

    개인적으로 저는 SharedPreferences 가벼운 상태나 변수 같은 용도로 사용하고


    리스트 데이터 같은 경우는 실제 서버에 요청해서 뽑아 오지만


    공부할때는 SQLLite 나 Room 사용 해서 로컬에 저장했습니다

  • Willee21
    119
    2021-01-23 12:18:55

    이게 중요한 데이터가 아니라,

    서버 전송 시점에, 인터넷 연결 상태가 불안해서 발생하는 경우이고,

    나중에 다시 접속하면 자동으로 전송되게 하는 용도라

    저는 이전에 그런 코드를 위의 Eleutherius 님과 똑같은 방식으로 구현했습니다.

    다만, 다른 것은 저는 파일로 보관을 했습니다.

    그러나 SharedPreference도 용량이 상당하고 결국 파일로 보관이 되므로 차이가 없습니다.

    SharedPreference에 gson연결하면 상당히 강력해 집니다.

    왜 강력하냐면,

    제가 3년전에 구현할 떄도, Retrofit2로 데이터를 Class Definition을 해서 전송했기 때문에,

    Class Instance를 바로 SharedPreference나 File로 보관하면,

    그냥 그대로 객체로 바꾸어서 Retrofit2로 서버로 전송하면 되기 때문에,

    매우 편리합니다. 코드 수정도 별로 없어요.

    다만 보안이 필요하다면, 암호화 해서 보관하시면 됩니다.

  • 혹등혹등
    508
    2021-01-25 20:57:57

    Willee21


    감사합니다. 먼저 추천해주신 Eleutherius 님도 감사합니다.

    다만 채택을 한 분 밖에 할 수 없네요 ㅠㅠ


  • 로그인을 하시면 답변을 등록할 수 있습니다.