Fix: 修复中台数据存储的 BUG。 调整写入策略

main
胡宇飞 2024-08-09 14:29:21 +08:00
parent 49774c3281
commit 7214c447a6
1 changed files with 22 additions and 11 deletions

View File

@ -35,7 +35,8 @@ namespace Guru
{
private const float SaveInterval = 3;
private const string SaveKey = "com.guru.sdk.model.save";
private float _lastSavedTime = 0;
private DateTime _lastSavedTime = new DateTime(1970,1,1);
private bool _noAds = false;
private readonly BindableProperty<int> _bLevel;
private readonly BindableProperty<int> _bPlay;
@ -55,8 +56,8 @@ namespace Guru
public GuruSDKModel()
{
// 读取内存值
GuruSDKSerializedModel model = LoadModel();
_uid = model.uid;
_noAds = model.no_ads;
_bLevel = new BindableProperty<int>(model.b_level);
@ -64,6 +65,7 @@ namespace Guru
_purchased = model.purchased;
}
public int BLevel
{
get => _bLevel.Value;
@ -150,9 +152,10 @@ namespace Guru
}
/// <summary>
/// 保存至数据
/// 保存至 PlayerPrefs 数据
/// </summary>
private void SaveToPlayerPrefs()
/// <param name="writeToDisk"></param>
private void SaveToPlayerPrefs(bool writeToDisk = false)
{
var model = new GuruSDKSerializedModel()
{
@ -164,21 +167,29 @@ namespace Guru
};
var json = JsonUtility.ToJson(model);
if (!string.IsNullOrEmpty(json))
{
PlayerPrefs.SetString(SaveKey, json);
}
if(writeToDisk)
{
PlayerPrefs.Save(); // 写入到磁盘
}
}
/// <summary>
/// 保存数据
/// </summary>
/// <param name="force"></param>
public void Save(bool force = false)
/// <param name="forceSave"></param>
public void Save(bool forceSave = false)
{
bool save = force || (Time.realtimeSinceStartup - _lastSavedTime>= SaveInterval);
if (save)
bool writeToDisk = forceSave || (DateTime.Now - _lastSavedTime)>= TimeSpan.FromSeconds(SaveInterval);
if (writeToDisk)
{
_lastSavedTime = Time.realtimeSinceStartup;
SaveToPlayerPrefs();
_lastSavedTime = DateTime.Now; // 超过间隔需要强制写入
}
SaveToPlayerPrefs(writeToDisk); // 每次保存都要设置到 PlayerPrefs 内
}
#endregion