質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1828閲覧

Androidアプリにおけるデータの保管方法について

reinsp5

総合スコア7

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/01/25 15:01

初投稿です。エンジニアの方々が集まるサービスがあると噂を聞いたので、登録してみました。よろしくお願いします。

質問は表題の通りAndroidアプリにおけるデータの保存方法についてです。

現在私は、GCMを使用したアプリの開発を趣味で行っています。このアプリは、定期的にサーバから配信されてくるJSON形式のメッセージを受信し、その内容に応じてユーザに通知を発したり、Activityを書き換えたりするものです。

ここで問題になっているのが、受信したJSONの取り扱いです。

このJSONにはアプリの正常な動作に必要不可欠なデータが含まれていて、再利用したいのです。そこで現在はSharedPreferences.getDefaultPreferences(getApplicationContext());としたうえで、プリファレンスの方に文字列として保管し、それを取り出したうえで、その都度JSONObjectとして扱っています。

ただ、プリファレンスに保存するやり方がベストなのかな?というところが疑問でして、その都度JSONObjectに変換するため、try-catchだらけでソースが汚いなぁと思っています。

Realmを使用して、DBに保存しておけば再利用が楽なのかな?とも考えつつ、Androidにおけるデータの保存方法は何が最良の選択なのか、知りたいと思っています。

以上です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JSONの内容によりますが。
JSONをデコードした後に各設定値毎にプリファレンスに保存すると、デコードは一度で済みますね。

また、設定値が複数あり切り替えて使う場合はDBを使うことも考えないといけないですね。

投稿2016/01/26 01:36

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reinsp5

2016/01/26 10:53

yonaさん、ご回答ありがとうございます! 分解してプリファレンスに保存するというのは手軽ですが、プリファレンスの使い方と申して良いのか…プリファレンス、DB、ファイルと3つの保存方法がAndroidには用意されているという記事を読んだのですが、具体的にどれが何に適しているのか?というところまでは分かりかねていまして… 暗号化の必要もなく、特にオブジェクトでもない、数値や真偽値、文字列ならばプリファレンスで十分と考えて良いものでしょうか?
reinsp5

2016/01/26 10:59

yonaさん、申し訳ありません一つ重要な事を忘れていました。 プリファレンスに分解して保存しなかったのは、このJSONに配列が含まれていたからでした。 プリファレンスにはリストは格納出来ないそうなので、どうしようかなぁと悩み始めたのが発端です。
yona

2016/01/26 12:34

なるほど、それならSharedPreferencesをラッピングしたクラスを作るのはどうでしょうか。 ・MySettings#getSetting1→設定1を取得する。 ・MySettings#getSettingArray→設定配列を取得する。 上記のようなクラスを作りJSONのデコードを隠してしまうのも手だと思いますよ。 他に作るとしたら配列はStringとして保存するなどがありますね。
reinsp5

2016/01/31 15:40

yogaさん 返信が遅くなり申し訳ありません。 なるほど!そうすればその都度try-catch文を書かなくても済みますね。あれから数日、Realmと格闘してみたもののイマイチ使い方が分からなくて… データの保管はできたものの、1対多をどう作るかがドキュメントを読んでも今ひとつピンとこないんですよね^^; Realmの使用はもう少し学習した後として、今回はとりあえず教えて頂いたラッピング用のクラスを作ろうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問