[英]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.