Mono For Android を使用して Android アプリを作成しています。
私のソリューションは次のように構成されています。
- コア -> ビジネス ロジックを含む .Net クラス ライブラリ。Android コードはありません。相互運用可能である必要があります。
- Core.AndroidLib -> Android クラス ライブラリ。Android 固有のコードが含まれています
- MyApp -> Android アプリケーション プロジェクト。レイアウト、アクティビティなどが含まれます。
Core には私のエンティティ (つまりStudent
) が含まれています。私Student
のクラスにはプロパティがありますIEnumerable<Schedule> Schedules
。このプロパティは Web サービス ( GetAllSchedules()
) から入力されます。リソースを節約するために、サービスからダウンロードされたデータはローカル SQLite データベースにキャッシュされます (キャッシュ ロジックは Core.AndroidLib にあります)。スケジュール データが要求されるたびに、最初にキャッシュをチェックし、追加のデータが必要な場合にのみ Web サービスに移動します。
この時点まで、Core は純粋な .Net クラス ライブラリのままです。
Cursors について読んだ後、Cursor は必要な場合にのみデータが「フェッチ」されるため、(IEnumerable<Schedule> Schedules
すべてを一度に事前入力してリストに格納するのではなく) クエリを実行する方が効率的であることに気付きました。
スケジュール データをリストに格納する代わりに、カーソル (つまり ) に格納することを考えていますICursor Schedule
が、このアプローチでは、コア ライブラリが Android ライブラリのクラスを使用するため、相互運用できなくなります。
スケジュール データをリストに保持し、SQL からデータを事前入力するだけにする必要がありますか ( Select * from Schedules
)、または ICursor を公開する必要がありますか? ICursor を公開することは、すべてのデータを取得してリストに格納するよりも効率的ですか?