संपादित 4 महीने पहले द्वारा ExtremeHow संपादकीय टीम
एंड्रॉइडडेटा बचतकनेक्टिविटीअनुकूलनसेटिंग्सस्मार्टफोनटिप्समोबाइल डिवाइसडेटा प्रबंधनउपयोगकर्ता इंटरफ़ेस
अनुवाद अपडेट किया गया 4 महीने पहले
Android डिवाइस पर डेटा सहेजना मोबाइल एप्लिकेशन विकास का एक अनिवार्य हिस्सा है। यह दस्तावेज़ आपको एंड्रॉइड डिवाइस पर डेटा सहेजने के लिए उपयोग की जाने वाली विभिन्न विधियों की एक व्यापक समझ प्रदान करेगा। डेटा सहेजने के कई तरीके हैं, जिनमें साझा प्राथमिकताएं, आंतरिक संग्रहण, बाहरी संग्रहण, SQLite डेटाबेस और अधिक शामिल हैं।
प्रत्येक संग्रहण विधि के विशिष्ट विवरण में जाने से पहले, यह समझना महत्वपूर्ण है कि एंड्रॉइड में डेटा संग्रहण को मार्गदर्शन करने वाले सामान्य सिद्धांत क्या हैं। आपको उन कारकों पर विचार करने की आवश्यकता है जैसे कि आप किस प्रकार का डेटा सहेज रहे हैं, इस डेटा की आवश्यक स्थिरता और डेटा की गोपनीयता। आइए पहले उन मुख्य डेटा स्टोरेज विकल्पों का विवरण दें जो आपके पास एंड्रॉइड पर हैं:
साझा प्राथमिकताएँ (Shared Preferences) की-वैल्यू जोड़ों के रूप में डेटा की छोटी मात्रा को संग्रहीत करने के लिए उपयुक्त है। इसका उपयोग अक्सर उपयोगकर्ता सेटिंग्स या एप्लिकेशन प्राथमिकताएं सहेजने के लिए किया जाता है। यहां बताया गया है कि आप अपने एंड्रॉइड एप्लिकेशन में SharedPreferences का उपयोग कैसे कर सकते हैं:
आप getSharedPreferences()
विधि को कॉल करके एक SharedPreferences इंस्टेंस प्राप्त कर सकते हैं, जिसके लिए दो पैरामीटर आवश्यक हैं: प्राथमिकताओं फ़ाइल का नाम और मोड।
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences में डेटा सहेजने के लिए, आपको SharedPreferences.Editor
वस्तु का उपयोग करने की आवश्यकता है। इसे करने का एक त्वरित तरीका यहां दिया गया है:
SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("username", "john_doe"); editor.putInt("user_id", 12345); editor.apply();
साझा प्राथमिकताएँ (Shared Preferences) से डेटा प्राप्त करना सरल है। आप getX()
विधियों का उपयोग कर सकते हैं, जहां X वह डेटा प्रकार है जिसे आप प्राप्त करना चाहते हैं:
String username = sharedPreferences.getString("username", "default_name"); int userId = sharedPreferences.getInt("user_id", 0);
आंतरिक संग्रहण (Internal Storage) उन फाइलों को सहेजने के लिए उपयोग किया जाता है जिन्हें केवल आपका एप्लिकेशन एक्सेस कर सकता है। यह निजी डेटा के लिए सबसे उपयुक्त है। यहां बताया गया है कि आप आंतरिक संग्रहण के साथ कैसे काम कर सकते हैं:
आप FileOutputStream
वर्ग का उपयोग करके किसी फाइल में लिख सकते हैं। यहां एक साधारण टेक्स्ट फ़ाइल लिखने का एक उदाहरण है:
String filename = "myfile.txt"; String fileContents = "Hello World!"; FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE); fos.write(fileContents.getBytes()); fos.close();
आंतरिक संग्रहण से किसी फ़ाइल को पढ़ने के लिए, आपको FileInputStream
का उपयोग करने की आवश्यकता है:
FileInputStream fis = openFileInput(filename); InputStreamReader inputStreamReader = new InputStreamReader(fis); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder sb = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { sb.append(line); } String fileContents = sb.toString();
बाहरी संग्रहण (External Storage) एक हटाने योग्य मीडिया हो सकता है जैसे कि SD कार्ड या डिवाइस की मेमोरी का एक भाग जो उपयोगकर्ता के लिए सुलभ है। यह बड़े फाइलों या फाइलों के लिए उपयोगी है जिन्हें अनुप्रयोगों में साझा किया जा सकता है। यहां बताया गया है कि आप बाहरी संग्रहण का उपयोग कैसे कर सकते हैं:
बाहरी संग्रहण का उपयोग करने से पहले, सुनिश्चित करें कि आपकी AndroidManifest.xml फ़ाइल में आवश्यक अनुमतियाँ शामिल हैं:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
बाहरी संग्रहण में डेटा लिखने के लिए, File
वर्ग का उपयोग कर निर्देशिका और फ़ाइल पथ को परिभाषित करें:
File externalStorageDir = Environment.getExternalStorageDirectory(); File myFile = new File(externalStorageDir, "myfile.txt"); FileOutputStream fos = new FileOutputStream(myFile); fos.write("Hello World!".getBytes()); fos.close();
बाहरी संग्रहण से किसी फ़ाइल को पढ़ना FileInputStream
का उपयोग करके संपन्न किया जा सकता है:
FileInputStream fis = new FileInputStream(myFile); InputStreamReader inputStreamReader = new InputStreamReader(fis); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder sb = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { sb.append(line); } String fileContents = sb.toString();
SQLite संरचित डेटा के लिए एक शक्तिशाली भंडारण विकल्प है और डेटा को संग्रहीत करने के लिए एक पूर्ण SQL डेटाबेस प्रदान करता है। यह बड़े या जटिल डेटा संरचनाओं के लिए उपयुक्त है। आइए सीखें कि एंड्रॉइड में SQLite डेटाबेस कैसे बनाएं और उसका उपयोग करें:
आपको डेटाबेस निर्माण और संस्करण प्रबंधन का प्रबंधन करने के लिए SQLiteOpenHelper
का विस्तार करने वाली एक मददगार कक्षा बनाने की आवश्यकता है:
public class MyDbHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "mydatabase.db"; public MyDbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS users"); onCreate(db); } }
आप ContentValues
का उपयोग करके डेटा प्रविष्टि कर सकते हैं:
MyDbHelper dbHelper = new MyDbHelper(getContext()); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "John Doe"); values.put("age", 29); long newRowId = db.insert("users", null, values);
डेटा का प्रश्न query()
या rawQuery()
विधि का उपयोग करके किया जाता है:
SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("users", new String[] {"id", "name", "age"}, null, null, null, null, null ); while(cursor.moveToNext()) { long userId = cursor.getLong(cursor.getColumnIndexOrThrow("id")); String userName = cursor.getString(cursor.getColumnIndexOrThrow("name")); int userAge = cursor.getInt(cursor.getColumnIndexOrThrow("age")); } cursor.close();
रूम एक अमूर्तन परत है जो डेटाबेस एक्सेस को सरल बनाती है, जिससे आप अपने क्वेरी को फ्लुएंट एपीआई में लिख सकते हैं या कम्पाइल-समय एसक्यूएल डायग्नोस्टिक्स पर भरोसा कर सकते हैं। यहां बुनियादी कदम हैं:
@Entity
एनोटेशन का उपयोग करके तालिका प्रतिनिधित्व के लिए एक इकाई को परिभाषित करें:
@Entity public class User { @PrimaryKey public int id; public String name; public int age; }
आप डीएओ के माध्यम से डेटाबेस तक पहुंचने के लिए विधियों को परिभाषित करते हैं:
@Dao public interface UserDao { @Insert void insertAll(User... users); @Query("SELECT * FROM user") List<User> getAll(); }
एक अमूर्त वर्ग बनाएं जो RoomDatabase
का विस्तार करता है और इसमें संस्थाएं और डीएओ सजग होते हैं:
@Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }
आप अपने एप्लिकेशन में निर्धारित डेटाबेस का उपयोग निम्नानुसार कर सकते हैं:
AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build(); UserDao userDao = db.userDao(); List<User> users = userDao.getAll();
अंततः, एंड्रॉइड डेटा संग्रहण के लिए कई विधियां प्रदान करता है, और आप अपनी विशेष आवश्यकताओं के आधार पर उनमें से चुन सकते हैं। प्रत्येक विधि की ताकत और सीमाओं को समझना आपके ऐप विकास के दौरान व्यावहारिक निर्णय लेने में आपकी सहायता करेगा।
यदि आपको लेख की सामग्री में कुछ गलत लगता है, आप कर सकते हैं