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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Android

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

7167閲覧

Android 4.0系のWebviewのローカルストレージで保存内容が消えてしまう。

chieeeeno

総合スコア217

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Android

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2016/04/05 15:43

スマホサイトのWebviewを使用して簡単なゲームコンテンツを作成しているのですが、
ユーザー情報(スコアなど)をローカルストレージに保存をしておりました。

iOS、Android4.4以降は問題なく保存ができ、
2回目以降も過去の値を取り出したりできていたのですが、
Android4.0、4.1の標準ブラウザ、及びアプリ上のWebviewにおいては、
アプリを終了してしまうとローカルストレージの値がすべて消えてしまいました。

値の保存方法としては、WebサイトのフレームワークにAngular.jsを使用しておりましたので、
ngStorageを使用して値を保存しております。

回避方法として、$cookieを使用して、localstorageに保存した内容をcookieの方にも保持しておき、
ブラウザ起動時にlocalstorageにcookieから値をコピーするという方法も試してみたのですが、
Cookieの方も値が保存されたり、保存されなかったり動作が不安定な状態でした。

今回の不具合について色々調べていたところ、andoroid4.0系は、ローカルストレージのデータは
RAMに保存されるため、アプリを落とすと消えてしまうという記事を見ました。
参考サイト:Webviewのlocalstorage

また、CookieについてもAndroid4系はCookie保存にかなりタイムラグが発生するということでした。
参考サイト:Android WebViewの cookieではまった。

考えられる回避方法は大体試してみたと思うのですが、
何かこれらの状況を打破できるような方法は無いでしょうか?

検証を行った機種は下記になります。
HTC J (Android4.0.2)

どうか、お知恵をお貸しください。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

localstorageに保持した内容を、端末側に保持するのはどうでしょうか?

アプリ終了時にPreference、またはSQLiteを使用し、値を保存
起動時にPreferenceまたは、SQLiteから値を取り出し、localstorageに値を入れる
は、みたいな流れを想定しています。

投稿2016/04/07 05:55

ueno

総合スコア221

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

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

chieeeeno

2016/04/07 14:46

ご返信ありがとうございます。 まず、本事象についてですが、localstorageについては相変わらず、 ブラウザを終了すると消えてしまうのですが、(これはOSの仕様なので諦めてます) Cookieについては、有効期限を設定することで回避することが出来ました。 ただ、標準ブラウザでは問題なくcookieの値からデータを読み出すことが出来たのですが、 アプリの方でCookieがうまく動作していなかったので、 こちらは改修が必要ということになりました。 いずれにせよ、今回の問題については、原因や解決策が見えたということで、 解決済みとさせていただきます。 また、ご提案いただいた内容についても、アプリ改修の際に参考にさせていただきたいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問