我希望在应用关闭时保存SharedPreferences中的点击次数。现在我有一个按钮连接的功能
private void SaveClicks (){
var prefs = Application.Context.GetSharedPreferences("Name",FileCreationMode.Private);
var prefEditor = prefs.Edit();
prefEditor.PutInt("Key", nametest);
prefEditor.Apply();
}
"点击"是int的名称,其中我存储了一个按钮中的点击次数
当应用程序关闭时,我会以什么方式自动执行此操作?使用onDestroy将是一个很好的解决方案吗?
//更新 所以我写了那段代码:
protected override void OnDestroy()
{
var prefs = Application.Context.GetSharedPreferences("Name", FileCreationMode.Private); // 1
var prefEditor = prefs.Edit(); // 2
prefEditor.PutInt("Key", nametest); // 3
prefEditor.Apply(); // 4
}
为了计算点击次数,我有类似的东西
var prefs = Application.Context.GetSharedPreferences("Name", FileCreationMode.Private); // 1
var value1 = prefs.GetInt("key", 0);
if (clicks + value1 <= 499)
{
clicks++;
textViewBattlepackCount.Text = (clicks + value1).ToString() + " clicks!";
progressBarName1.Progress = progressBarName1.Progress + 1;
nametest= clicks + value1;
if (clicks + value1 == 500)
{
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.SetTitle("You won!");
alertDialog.SetMessage("message");
alertDialog.SetNeutralButton("Ok", delegate
{
alertDialog.Dispose();
});
alertDialog.Show();
clicks = 0;
nametest= 0;
textViewTXTCount.Text = "0";
progressBarName1.Progress = progressBarName1.Progress = 0;
}
但是onDestroy()中的点击有时只是存储,有一次是正确的数字,但是在kill活动和重启应用之后的另一个时间点击次数很多。我不知道为什么。 对不起混乱的描述
答案 0 :(得分:1)
这取决于您的要求:
如果您只是想在活动被杀死时存储点击次数。使用OnDestory()
如果你想在活动在后台时存储点击次数(例如你按下主页按钮或其他活动开始),请使用onPause();
onSaveInstanceState()也可以在活动销毁之前调用,它可以恢复一些临时数据(例如EditText中的文本)。
答案 1 :(得分:0)
下一个问题。
SharedPreferences&#34; key&#34;当你打电话给onDestory()时应该被覆盖,如果没有,请跟踪你的&#34; nametest&#34;使用debug
BTW
prefEditor.PutInt("Key", nametest);
var value1 = prefs.GetInt("key", 0);
请使用相同的&#34; Key&#34; - - !!