2017-03-03 9 views
0

Androidで固定キューを実装したいと思います。基本的には、別のスレッドがデータを取得してどこかに送信するまで、データが格納されるキューです。データの格納または消費の順序は重要ではありません(FIFO、LIFO、LILOなど)。これをサポートするAndroidには最新の図書館がありますか?Androidで固定キューを実装する方法

私はSOFの前の質問を見つけましたが、これは2012年にさかのぼる:How to realize a persistent queue on Android

+0

なぜlifを使用しないのですか?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として保存します。

ホークのギブスのページから引用や画像を引用しています。

あなたは(「永続性」の項で)ここに他の選択肢を見つけることができます:https://github.com/codepath/android_guides/wiki/Must-Have-Libraries

+0

あなたの徹底的な答えに感謝します。 SharedPreferencesにコレクションを保存できることは分かりませんでした。私はこれが単純なタイプのものだと思った。 SharedPreferencesに格納できるもののサイズには制限がありますか? – MadProgrammer

+0

コレクションをSharedPreferencesに直接保存することはできません。プリミティブ型のみを保存できます。しかし、あなたはリストをシリアル化することができます(例えば、リストをjsonに変換することによって)。それをStringとして保存します。しかし、これを行うためのコードを書く必要があります。ですから、ホークのようなライブラリを使う方がいいです。いずれにしても、オブジェクトをシリアル化して格納する必要があります。とにかくコレクションが非常に大きい場合は、それをSharedPreferencesに保存しないほうがよいでしょう。それはSharedPreferencesがxmlとして保存され、大きなxmlを読み込むのが遅くなるためです。私は最も効率的な方法はSQLiteを使うことだと思いますが、それは一番簡単な方法ではありません。 – Flood2d

+0

HawkはSharedPreferencesを使用してデータをディスクに保存します。ですからSharedPreferencesに保存することに決めたら、私はホークを使っています; – Flood2d

1

あなたはそれが仕事を持続し、それらの優先順位を決定するためのオプションを持っているPriority Jobqueue

チェックアウトすることができます。

関連する問題