Java 如何在共享首选项中指定唯一的字符串值
我使用共享首选项在我的应用程序中存储来电者详细信息,如下所示。 无论何时有来电,我都会保存来电者的以下详细信息Java 如何在共享首选项中指定唯一的字符串值,java,android,sharedpreferences,Java,Android,Sharedpreferences,我使用共享首选项在我的应用程序中存储来电者详细信息,如下所示。 无论何时有来电,我都会保存来电者的以下详细信息 sharedPrefCallLog = getSharedPreferences("CallLogPref", Context.MODE_PRIVATE); editorCallLogPref = sharedPrefCallLog.edit(); editorCallLogPref.putString("name", Name); editorCallLog
sharedPrefCallLog = getSharedPreferences("CallLogPref", Context.MODE_PRIVATE);
editorCallLogPref = sharedPrefCallLog.edit();
editorCallLogPref.putString("name", Name);
editorCallLogPref.putString("num", Number);
editorCallLogPref.putString("city",City);
editorCallLogPref.apply();
第一次通话一切正常。当收到第二个呼叫时,第一个呼叫的详细信息将被清除并替换为第二个呼叫。我怎样才能拯救一切?我想保存最近10次通话的详细信息
我应该使用除SharedRef之外的其他方法吗
任何建议都会很有帮助,谢谢:如果您需要保存多达10条通话记录,只需保存一个小数据集,那么共享首选项就可以了 您需要为记录分配唯一的密钥
private void saveCallLog(final int callRecordID){
// key here is callRecordID
sharedPrefCallLog = getSharedPreferences("CallLogPref", Context.MODE_PRIVATE);
editorCallLogPref = sharedPrefCallLog.edit();
editorCallLogPref.putString("name_"+ callRecordID, Name);
editorCallLogPref.putString("num_"+ callRecordID, Number);
editorCallLogPref.putString("city_"+ callRecordID,City);
editorCallLogPref.apply();
}
要获取呼叫日志详细信息,请使用
private void getCallDetails(int callRecordID){
sharedPrefCallLog.getString("name_"+ callRecordID, null);
sharedPrefCallLog.getString("num_"+ callRecordID, null);
sharedPrefCallLog.getString("city_"+ callRecordID, null);
}
对我来说,共享首选项并不好,你必须使用数据库persistence作为房间或领域,例如,我只需要保存10个呼叫详细信息。我真的需要数据库吗?