キャッシュをサーバーと同期する
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
オフラインモードをサポートする書き込みスクリーンレットを使用する場合、キャッシュに書き込まれる新しいデータもサーバーと同期する必要があります。 Liferay Screensに含まれる書き込みスクリーンレットがこれを行います。 ただし、カスタム書き込みスクリーンレットを使用する場合は、これを手動で行う必要があります。 これは、スクリーンレットを使用するアクティビティまたはフラグメントで行う必要があります。ただし、このアクティビティまたはフラグメントの正確な場所はユーザー次第です。
書き込みScreenletのデータをサーバーと手動で同期するには、次の手順を実行します。
- サーバーと同期する必要があるイベントを取得します。 これを行うには、まずイベントに関連付けられたキャッシュキーを取得する必要があります。 次に、キーを
Cache.getObject
メソッドの引数として使用します。 - イベントでインタラクターを呼び出します。 これにより、データがサーバーと同期されます。
たとえば、次のコードは Cache.findKeys
メソッドを使用して、キャッシュ内の BookmarkEvent
キーをすべて取得します。 その後のループは、各キーに対応するイベントを取得し、Interactorを呼び出してサーバーに同期します。
String[] keys = Cache.findKeys(BookmarkEvent.class, groupId, userId, locale, 0,
Integer.MAX_VALUE);
for (String key : keys) {
BookmarkEvent event = Cache.getObject(BookmarkEvent.class, groupId, userId, key);
new AddBookmarkInteractor().execute(event);
}
Screenletクラスでキャッシュキーを設定しないことを選択した場合、キーの代わりに null
を渡すことができます。
キャッシュキーを保存および取得する代替方法として、Androidの SharedPreferences
APIを使用できることにも注意してください。 たとえば、次のコードは共有設定にキャッシュキーを保存します。
SharedPreferences sharedPreferences = getSharedPreferences("MY_PREFERENCES", Context.MODE_PRIVATE);
HashSet<String> values = new HashSet<>();
sharedPreferences.edit().putStringSet("keysToSync", values).apply();
その後、共有設定から他のキーと値のセットを取得するのと同じようにキーを取得できます。
SharedPreferences sharedPreferences = getSharedPreferences("MY_PREFERENCES", Context.MODE_PRIVATE);
HashSet<String> keysToSync = sharedPreferences.getStringSet("keysToSync", new HashSet<>());