5

parse.com は、object.saveEventually(); を使用してオフライン モードでオブジェクトを保存する方法を提供します。呼び出し..これにより、サーバーとの同期が行われない限り、オブジェクトがローカル dataStore に格納されます。

問題は、以下の行でファイルを保存できないことです

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 80, stream);
byte[] byteArray = stream.toByteArray();
file = new ParseFile("pic.png",byteArray);  
object.put("file.png", file);   
object.saveEventually();

次のエラーが発生します

java.lang.IllegalStateException: Unable to encode an unsaved ParseFile

ファイルを保存するための解析ドキュメントによると、file.saveInBackgroundを呼び出す必要があります...そして、saveInBackgroundはインターネット接続がある場合にのみ機能すると思います...

しかし、私が実装したいのは、サーバーとの同期が完了するまでローカルデータストアからデータ (オブジェクトまたはファイル) を取得することです...

サーバーとの同期が完了するまで、ローカルデータストアからそのファイルにアクセスできるように、オフラインモードでファイルを保存するにはどうすればよいですか...

4

4 に答える 4

2

最終的にオブジェクトを保存し、saveeventually のコールバックで parsefile の saveinbackground を呼び出し、再度そのファイルをオブジェクトに入れ、最終的に保存します。これにより、ファイルがオフラインで保存されます

于 2015-07-14T10:25:24.427 に答える
1

ファイルに対して call save を呼び出すことはありません(エラーを注意深く読んでください:「Unsaved ParseFileをエンコードできません」)

最初にファイルを保存する必要があります。保存が完了したら、ファイルを参照するオブジェクトで save を呼び出すことができます。

コールバックを使用して file.saveInBackground() を呼び出すことをお勧めします。 https://parse.com/docs/android/api/com/parse/ParseFile.html#saveInBackground(com.parse.SaveCallback , com.parse.ProgressCallback)

例:

プライベート ボイド saveImageOnParseWithCallbacks(){

parseFile = new ParseFile(gate_image.getName(), byte_image);
parseFile.saveInBackground(new SaveCallback() {
    @Override
public void done(ParseException e) {                          
                if (e == null) {
                    saveParseObject(); // this is where you call object.SaveEven....
                }else {
                   e.printStackTrace(System.err);
                }
              }   
             }, new ProgressCallback() {
               @Override
           public void done(Integer percentDone) {
              // Update your progress spinner here. percentDone will be between 0 and 100.
                }
              });
    }

parse の新しいローカル データ ストアを見てください。ParseObjects では機能しますが、ParseFiles では機能しません (私の知る限り) オフライン ソリューションでは、最初にオブジェクト ファイルを固定し、イメージをローカルの SD カードに保存する必要があります。オブジェクトの savecallback が完了すると、イメージを保存できます (つまり、インターネットが復元されたことがわかります)。画像の savecallback が完了すると、画像への参照でオブジェクトを更新できます。

https://parse.com/docs/android/api/com/parse/ParseObject.html#pinAllInBackground(java.lang.String、java.util.List、com.parse.SaveCallback )

于 2014-05-17T21:48:54.540 に答える