[英]Xamarin Android - How to improve the speed the reliability of the program
所以我正在做一個與 Firebase Firestore 交互的程序,我是 xamarin android 的新手,所以我不確定如何正常工作。
所以我的程序有一些問題,最重要的是:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var view = inflater.Inflate(Resource.Layout.fragment_service, container, false);
recyclerview = view.FindViewById<RecyclerView>(Resource.Id.fragment_service_RecyclerView);
recyclerview.SetLayoutManager(new LinearLayoutManager(recyclerview.Context));
ListenForChanges();
return view;
}
ListenForChanges() ->
CrossCloudFirestore.Current
.Instance
.GetCollection("FichaServicos")
.WhereEqualsTo("idFicha", Doc.id)
.AddSnapshotListener((snapshot, error) =>
{
if (snapshot != null)
{
foreach (var documentChange in snapshot.DocumentChanges)
{
switch (documentChange.Type)
{
...
所以我的問題是,我能否以某種方式全局保存數據或在片段之間發送數據,這樣我就不需要每次都從 firestore 請求數據?
全局保存數據
實際上,有很多解決方案可以實現它
您可以使用SharedPreferences 。 例如設置數據:
var data = GetSharedPreferences("Data", 0);
var editor = data.Edit();
editor.PutString("name","ABC");
editor.Commit();
並獲取數據:
var data = GetSharedPreferences("Data", 0);
string name = data.GetString("name", "default");
如果數據類型是自定義的(如自定義模型或列表),您可以為數據管理器定義一個單例類
public class DataManager
{
private static DataManager instance;
public List<string> Source { get; set; }
//other data that ylou want to save , you need to defien them in advance
//public ...
private DataManager() { }
public static DataManager Instance
{
get
{
if (instance == null)
{
instance = new DataManager();
}
return instance;
}
}
}
並參考它如下
//set the value after you get it from filestore
DataManager dataManager = DataManager.Instance;
dataManager.Source = xxx;
您可以使用像 sqlite 這樣的本地數據庫。 查看官方文檔了解更多詳情。
在片段之間發送數據
在活動中
Bundle mybundle = new Bundle();
mybundle.PutString("MyDataTag", "Hello");
//you can also put other data like int , float and long
FragmentTransaction fragmentTransaction = SupportFragmentManager.BeginTransaction();
var myFragment = new VerifyReportFragment();
myFragment .Arguments = mybundle;
在片段 OnCreateView 中
String stringData= Arguments.GetString("MyDataTag");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.