問題タブ [akavache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - キャッシュされた値が存在する場合、Akavache GetAndFetchLatest は最新のものをフェッチしません
Xamarin.Forms プロジェクトでAkavache GetAndFetchLatest メソッドを使用しようとしていますが、期待どおりに機能せず、誰かが間違っている場所を見つけられることを望んでいました。
私は次のようにメソッドを呼び出しています:
初めてアプリを起動すると、FetchOrganizations メソッドが期待どおりに呼び出され、ローカル サーバーがリクエストを処理していることがわかります。ただし、Akavache がデータをキャッシュするとすぐに、キャッシュを返すだけで、FetchOrganizations メソッドを再度呼び出すことはありません。私のサーバーは別のリクエストを認識しません。短いタイムアウトを使用すると、キャッシュの有効期限が切れたときに FetchOrganizations メソッドが呼び出されます。ご覧のとおり、fetchPredicate パラメーターを使用してみましたが、効果がないようです。
GetAndFetchLatest に常に新しいデータを取得させる別の方法はありますか? fetchPredicate の仕組みを誤解していますか?
c# - Akavache の GetObject待っているとハングします。ここで何が間違っているのですか?
Xamarin.Forms アプリケーションがあり、App クラスに次のコードがあります (はい、これは問題を示すための単なるサンプルです)。
キー「ユーザー」が存在しないため、KeyNotFoundException が発生することが予想されます。ただし、この例外がスローされることはありません。代わりに、単に「ハング」し、await GetObject 呼び出しから戻ることはありません。
Android 5.0を搭載した携帯電話でこれを実行しています。
これを修正する方法はありますか?私は根本的に間違ったことをしていますか?
更新: 補足: すぐに GetObject を試す代わりに、キーが実際にキャッシュに存在するかどうかを確認してから、キャッシュから取得することもできます。ただし、私が間違っていなければ、上記のサンプルのように GetObject を呼び出して例外をキャッチする以外にチェックを行う方法はありません。アイテムが存在するかどうかを知りたいだけのシナリオでは、それは理想的ではないようです。「Exists()」メソッドは、Akavache にあると便利でしょうか? それとも、何かが足りないのでしょうか?
Update2: コンストラクターで非同期メソッドを使用しないように例を変更します。それが問題ではないという点を証明するためだけに。
Update3: コンストラクターから呼び出しを削除します。コード内の任意の場所から BlockingGetExternalUser を呼び出すと、待機がまだハングします。
c# - 派生型をキャッシュに永続化する
GetAndFetchLatest を使用して Akavache のキャッシュに派生型を保持したいのですが、いくつかの問題に遭遇しました。私のPOCOは次のとおりです。
これらの型は ObserverableCollection に格納されます。GetAndFetchLatest はそれらを基本型 (TableCell) に変換し、ポリモーフィックの利点をすべて失います。これらのオブジェクトを派生型としてキャッシュに強制的に保存する方法はありますか?
ありがとう!
windows-phone - Reactive Extensions、Akavache、および Refit は、Windows Phone の内蔵カードには多すぎます
アプリケーションでpaulcbetts/refitとakavache/Akavacheを使用したい。
問題は、私の論理によれば、Windows Phone は私が次のことをするのを好まないということです:
学期を取得し (キャッシュからフェッチしてから)、必要な学期を選択し (テスト用に H2014 を配置しました)、選択した (多くの) 学期のスケジュールを取得します (キャッシュから取得してから、次のように実行します)。
5 以上の TimeSpan.FromSeconds を使用すると、まるで Windows Phone に息を吹き込む時間を与えるかのように、思いどおりに動作します。そうでなければ(5未満)、例外として得られるのは次のとおりです。
例外がスローされました: mscorlib.ni.dll StackTrace の 'System.NotSupportedException':
必要な動作:
- キャッシュされた学期を取得 -> その学期のキャッシュされたスケジュールを取得、その学期のスケジュールをフェッチ
- 学期を取得 -> その学期のキャッシュされたスケジュールを取得、その学期のスケジュールを取得
私は試した:
- Refitなしでakavache/Akavacheをチェーンすると動作します。
- akavache/Akavacheを使用せずに GetSchedule と GetSemester の Select をチェーンすると、機能します。
回避策や私が間違っていることについてアイデアがある場合は、お知らせください。
xamarin.forms - PCL Xamarin Forms アプリを使用して Akavache を動作させることができない
私はこれに4時間苦労してきましたが、今はぐるぐる回っています。プロジェクトで Akavache を実行しようとしています。このプロジェクトは、すぐに使用できる Xamarin Forms (Portable) タイプです。次に、Nuget を使用して Akavache 4.1.2 を追加しました (これにより、Akavache Core と SqlLite3、ReactiveUI と Splat も追加されました)。次に、nuget パッケージの依存関係が間違っているため、Splat を更新しました (1.3.3 でしたが、1.6.0 にする必要がありました)。しかし、これをターゲットにする必要がある最初の行を追加するときに、このアプリを起動するとエラーが発生します (今のところ iOS をターゲットにしています) (BlobCache.ApplicationName = "MyApp"):
Xamarin 4.1.0 で VS 2015 コミュニティを実行している PS
xamarin - Akavache BlobCache.Secure は Android で null です
Akavache を使用して、Xamarin.iOS および Xamarin.Android プロジェクトにデータを安全に保存しようとしています。BlobCache.Secure
iOS ではすべて問題ないように見えますが、Androidでは nullと言って失敗します。
キャッシュにアクセスする前に、次のように設定しました。
私はそれを直接参照しようとしました: BlobCache.Secure
( Secure null
) または IoC を使用して設定することによって
しかし、最終結果は同じです。Android の BlobCache で使用できる唯一のキャッシュは、InMemoryCache です。
caching - Akavache は常に fetchFunc を呼び出します
Xamarin アプリで Akavache を使用した次のコードがありますが、私が思うように動作していません。おそらくそれがどうあるべきかについての私の誤解ですが、それは私を夢中にさせています.
したがって、私のビューモデルでは、FetchNewsCategories を呼び出し、アイテムに 5 分のキャッシュを指定しています。私が期待しているのは、キャッシュ項目がそこにない場合、fetchFunc (つまり、FetchNewsCategoriesAsync) が呼び出されることですが、5 分のキャッシュ タイムアウト内で何度でもサービスを呼び出すと、キャッシュされたアイテムを渡すだけで、サーバー呼び出しは行いません。私が試したすべてのケースで、残りの呼び出しを実行し続け、キャッシュされたアイテムを提供することはありません。私も GetAndFetchLatest でこれを試しました。キャッシュされたアイテムがある場合、残りの呼び出しは行われませんが、ビューモデルのサブスクライブ イベントでも呼び出しが行われません。ここで私が間違っていることはありますか?
編集: Android (Nexus 5 KitKat API19) でこの同じコードをテストしましたが、問題なく動作しています。IOS エミュレーターをリセットして、何かがおかしくないかどうかを確認します。
NewsService.cs
NewsViewModel.cs