Android เทียบเท่ากับ NSUserDefaults ใน iOS


104

ฉันต้องการบันทึกข้อมูลง่ายๆ ใน iPhone ฉันสามารถทำได้ด้วยNSUserDefaultsObjective-C

คำสั่งที่คล้ายกันใน Android คืออะไร?

ฉันแค่บันทึกตัวแปรสองสามตัวเพื่อนำกลับมาใช้ตราบเท่าที่ติดตั้งแอปพลิเคชัน ฉันไม่ต้องการใช้ฐานข้อมูลที่ซับซ้อนเพียงเพื่อทำเช่นนั้น

คำตอบ:


212

นี่เป็นวิธีแก้ปัญหาที่ง่ายที่สุดที่ฉันพบ:

//--Init
int myvar = 12;


//--SAVE Data
SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);  
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("var1", myvar);
editor.commit();


//--READ data       
myvar = preferences.getInt("var1", 0);  

ที่ไหนบริบท 'คือบริบทปัจจุบัน (เช่นใน subclass กิจกรรมอาจจะนี้ )


นี่คือวิธีการจัดเก็บสิ่งของที่เรียบง่ายง่ายและตรงประเด็น
smith324

ฉันแก้ไขข้อผิดพลาดในรหัส (เรียกว่า getPreferences ที่ไม่มีอยู่จริงไม่ใช่ getSharedPreferences)
Ben Clayton

14
อัปเดต 2015: Android แนะนำให้ใช้ apply () now over comm () เนื่องจาก apply () ทำงานบนเธรดพื้นหลังแทนที่จะเก็บข้อมูลถาวรทันทีและอาจบล็อกเธรดหลักได้
AppsIntheParkNYC

มีวิธีเข้าถึง SharedPreferences จากรหัส jni หรือไม่?
IgorGanapolsky

2
หากต้องการรับ 'บริบท' จากภายใน AppCompatActivityคุณสามารถใช้getApplicationContext()
Brainware
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.