2017-03-03 6 views
0

안드로이드에서 영속 큐를 구현하고 싶습니다. 기본적으로 다른 스레드가 데이터를 가져 와서 어딘가에 보낼 때까지 데이터가 저장되는 큐입니다. 데이터가 저장되거나 소비되는 순서는 중요하지 않습니다 (예 : FIFO, LIFO, LILO 등). 이것을 지원하는 Android 라이브러리가 있습니까? 안드로이드에서 영속 큐를 구현하는 방법

내가 SOF에 이전 질문을 찾았지만이 2012 년부터 날짜 : How to realize a persistent queue on Android이 있습니다

+0

스택 lifo = new Stack() 또는 Queue fifo = new PriorityQueue(); ? – sadat

+0

그것들은 좋아 보이지만 서비스/활동이 파기 된 후에도 PriorityQueue를 어떻게 말할 수 있습니까? – MadProgrammer

답변

2

방법의 많은이 작업을 수행 할 수 있습니다. 컬렉션을 SQLite와 같은 데이터베이스에 저장하고, 파일로 직렬화하고, 필요할 때 역 직렬화하거나, Android의 SharedPreferences에 저장할 수 있습니다. Hawk mechanism

:

어쨌든 호크 작동 방법 안드로이드

에 대한

안전하고 간단한 키 - 값 저장이 호크 (https://github.com/orhanobut/hawk) 라는 멋진 라이브러리가

Hawk 소스 코드를 살펴보면 SharedPreferences를 사용하여 데이터를 디스크에 저장하는 것을 볼 수 있습니다. 지속하고자하는 객체를 직렬화하여 SharedPreferences에 String으로 저장합니다.

견적 및 이미지는 Hawk github 페이지에서 가져온 것입니다.

있습니다 ("지속성"절에) 여기에 다른 대안을 찾을 수 있습니다 https://github.com/codepath/android_guides/wiki/Must-Have-Libraries

+0

철저한 답변을 주셔서 감사합니다. SharedPreferences에 컬렉션을 저장할 수 있다는 것을 알지 못했습니다. 나는 이것이 단순한 유형을위한 것이라고 생각했다. SharedPreferences에 저장할 수있는 크기에 제한이 있습니까? – MadProgrammer

+0

컬렉션을 SharedPreferences에 직접 저장할 수 없습니다. 기본 유형 만 저장할 수 있습니다. 하지만 목록을 직렬화 (예 : 목록을 json으로 변환)하여 String으로 저장할 수 있습니다. 하지만 이렇게하려면 코드를 작성해야합니다. 따라서 Hawk과 같은 라이브러리를 사용하는 것이 좋습니다. 어쨌든 객체를 직렬화하여 객체를 저장해야합니다. 어쨌든 컬렉션이 크다면 SharedPreferences에 저장하지 않는 것이 좋습니다. 왜냐하면 SharedPreferences는 XML로 저장되기 때문에 큰 XML을로드하는 속도가 느려질 수 있기 때문입니다. SQLite를 사용하는 것이 가장 효율적인 방법이라고 생각 합니다만, 가장 쉬운 방법은 아닙니다. – Flood2d

+0

Hawk는 SharedPreferences를 사용하여 데이터를 디스크에 저장합니다! 그래서 SharedPreferences에 저장하기로 결정했다면 Hawk을 확실히 사용할 것입니다.) – Flood2d

1

당신은 작업을 지속하고 우선 순위를 할 수있는 옵션이 Priority Jobqueue

확인할 수 있습니다.