2016-07-16 17 views
0

私は現在フラグメントで作業していますが、私の断片の1つは「サインインしたユーザーが自分のプロファイルを編集して見ることができるユーザープロファイル」です。この大学プロジェクトの要件の1つは、ユーザーがプロファイル画像をアップロードできる必要があり、ユーザープロファイルに割り当ててサーバーに保存する必要があるということです(私は現在LinuxでLamppを使用しています)。ユーザーがボレーライブラリ(アンドロイド)を使用して画像をアップロードすると画像をダウンロードして保存する

  1. は、それが最初のMySQLデータベースに画像の相対/絶対パスを保存する必要がないし、この情報を使用します。私は、次の質問を持っていますJSON形式のイメージをデバイスに戻すには、どこにキャッシュするのですか?

  2. 私は、Volleyライブラリがデバイス上のイメージとビデオをキャッシュできることをオンラインで読んでいます。これは、データの消費に役立ちます。そのため、ユーザーは再度ログインするたびにイメージをダウンロードする必要はありません。しかし、ユーザーがIOSデバイスからアプリケーションにログインしてそこにイメージをアップロードしてからAndroidデバイスに戻ってそこにログインすると、アプリはユーザープロファイルを更新する必要があります。

私の思考は、新しい画像がアップロードされた時間は、DBの日付/時刻スロットに追加されるサーバーにアップロードされるたびでした、その後、保存されているこの時間は、SQLiteのDBとMySQLでDBは、アプリケーションを開くたびに、MySQLデータベースにこの時間フィールドを要求します。画像が追加されていない場合、SQLiteの時刻とMySQLデータベースから取得した時刻は同じになりますので、ダウンロードする必要はありません画像 - これは、多くのデータを使用せずにチェックする簡単な方法だろうと思った?誰かが提案できるより良い選択肢があります。

しかし、上記の問題は、例えば、デバイスに5つのイメージがキャッシュされているが、元のデバイスに戻ったときに6番目のデバイスが別のデバイスから追加されたということです。画像?既にキャッシュに入っている他の5つのすべてではありませんか?

+0

これは実際に具体的な問題が何であるかについてのヒントではなく、何をしようとしているのかについての説明です。 – tadman

答えて

1
  1. 私はあなたがイメージファイルへのパスではなく、あなたがVolleyに渡すURIに格納する必要があると思います。そして、Volleyに画像保存されたURIを表示したい場合、キャッシュされた画像を表示するか、インターネットからアップロードするかを決定します。

  2. 良い考え。あなたのケースでは、dpにキャッシュされたデータを表示し、さらにサーバーからデータをフェッチするだけで、キャッシュを変更して新しい結果を表示することができます。また、長いポーリングやソケット、GCMを実装してサーバーとの接続を設定し、新しい更新データを即座に取得することもできます(実際にはすぐにではなく、「サーバーサイドに変更があった場合はアプリからリクエストからチェックする」 )。

そしてもちろん、サーバー側でこの事を実装について考え、ローカルのキャッシュされたデータの即時更新ともっと面白いとcovenient接続を提供するために、firebaseチュートリアルに見てください。 additional link to video tutroial

+0

私はいくつか質問があります: 1.実際のイメージをMySQL DBに保存することをお勧めしますか?我々は何らかの理由でこれをしないように大学でいつも言われました。 2.私はあなたが何を意味するのか十分に理解していません。「dpにキャッシュされたデータを表示する」という意味は、キャッシュからイメージを見せてサーバから取得するということですか?これが意味するのであれば、すべてのイメージを再度読み込みますか?多くのデータを使用します。「長いポーリングやソケット、GCMを実装する」ためにfirebaseを使用するだけですか?ありがとうございます – AmberHelpSK

+0

1.画像ではなく画像のURIでDBに保存することをお勧めします。例えば、あなたがVolley –

+0

に渡すURLです。私は、あなたがdpにimageのURIをキャッシュしていることを意味します。あるいは、ユーザープロフィールのキャッシュされた情報です。関係ない。次に、このデータをdbから取得します。イメージの場合は、dbからイメージのURIが格納されます。次に、ボレーの助けを借りてそれを示してください。次に、サーバーに新しい情報を取得するよう要求します。次に、db内のこの情報をキャッシュに変更し、更新された情報を表示する場合。 –

関連する問題