ذخیره اطلاعات با Shared Preferences - در برنامه نویسی اندروید

اندروید راه های زیادی را برای ذخیره داده های یک برنامه ارائه می دهد که یکی از این راه ها Shared Preferences نام دارد. Shared Preferences به شما امکان می دهد داده ها را در قالب کِی وَلیو (کلید و مقدار)، ذخیره سازی و بازیابی کنید.

برای استفاده از Shared Preference ، باید متد ()getSharedPreferences را فراخوانی کنید که یک نمونه از کلاس SharedPreference را که اشاره به فایلی که حاوی مقادیر ذخیره سازی است، را برگرداند.

SharedPreferences sharedpreferences = getSharedPreferences("MY_FILE_NAME", Context.MODE_PRIVATE);

حالت های ایجاد shared preferences

پارامتر اول کلید که همان نام فایل را مشخص میکند و پارامتر دوم MODE یا مدل ذخیره سازی داده ها است. به غیر از حالت خصوصی، حالت های دیگری نیز موجود است که در زیر لیست شده است :

حالت و توضیحات ردیف
MODE_APPEND

این حالت Shared Preference جدید را با Shared Preference موجود وصل می کند.

1
MODE_ENABLE_WRITE_AHEAD_LOGGING

flag باز پایگاه داده را تنظیم میکند، به طور پیش‌فرض ثبت پیش‌نویس را فعال می‌کند.

2
MODE_MULTI_PROCESS

حالت بالا به شما اجازه میدهد که هم زمان چند Shared Preference را بارگیری کنید.

3
MODE_PRIVATE

در این حالت Shared Preference مشخص شده تنها برای این اپلیکیشن قابل ویرایش و خواندن است.

4
MODE_WORLD_READABLE

استفاه از این حالت به Shared Preference شما این امکان را میدهد که توسط اپلیکیشن های دیگری نیز خوانده شود.

5
MODE_WORLD_WRITEABLE

با استفاه از این حالت به Shared Preference شما این امکان را میدهد که توسط اپلیکیشن های دیگری نیز نوشته شود.

6

با استفاده از کلاس SharedPreferences.Editor می توانید هر چیزی را که نیاز در sharedpreferences ذخیره کنید. با استفاده از فراخوانی متد edit میتوانید از نمونه کلاس SharedPreference, یک شی Editor دریافت کنید که بتوانید عمل ذخیره سازی را انجام بدهید. به کدهای پایین دقت کنید:

Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.apply();

متدهای مهم shared preferences

جدای از متد putString، متدهایی دیگری در کلاس Editor وجود دارد که امکان دستکاری داده‌ها را در shared preferences فراهم می‌کند. این متدها را در پایین آورده ایم که شامل توضیحات آن میباشد:

متد و توضیحات ردیف
apply()

یک متد انتزاعی است که تغییرات شما را از حالت Editor به شی sharedPreference که در حال استفاده آن هستید بازگرداند.

1
clear()

تمام مقادیر را که قبلا ذخیره شده است را با استفاده از Editor حذف می کند.

2
remove(String key)

مقداری که کلید آن به عنوان پارامتر ارسال شده است را حذف می کند.

3
putLong(String key, long value)

این یک مقدار عددی long که بعنوان پارامتر ارسال میشود را ذخیره می کند.

4
putInt(String key, int value)

در این متد میتوانید یک مقدار عدد صحیح را که بعنوان پارامتر ارسال میشود را ذخیره می کند.

5
putFloat(String key, float value)

مقدار عددی float که بعنوان پارامتر ارسال میشود را ذخیره می کند.

6

مثال

این مثال استفاده از shared preferences را نشان می دهد که صفحه‌ای را با چند فیلد متنی نمایش می‌دهد که وقتی برنامه بسته می‌شود، مقدار آن ذخیره می‌شود و پس از باز شدن دوباره آن بازگرداندی می‌شود. برای آزمایش این مثال، میتوانید آن را بر روی یک دستگاه واقعی و مجازی پس از توسعه برنامه طبق مراحل زیر اجرا کنید:

توضیحات مرحله
ابتدا یک پروژه جدید در اندروید استودیو با یک پکیج دلخواه ایجاد کنید و ادامه مراحل را دنبال کنید. 1
کدهای درون فایل MainActivity.class را مطابق کدهای که در پایین آورده ایم تغییر بدهید. 2
کدهای درون فایل activity_main.xml را مطابق کدهای که در پایین آورده ایم تغییر بدهید. 3
برنامه را بر روی یک تلفن واقعی یا شبیه ساز اجرا کنید و تست را انجام بدهید. 4

فایل MainActivity.java

package com.foray.articlelib;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private EditText ed1, ed2, ed3;
    public static final String MyPREFERENCES = "My7ClonerPrefs";
    public static final String Name = "nameKey";
    public static final String Phone = "phoneKey";
    public static final String Email = "emailKey";

    private SharedPreferences sharedpreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ed1 = findViewById(R.id.editText);
        ed2 = findViewById(R.id.editText2);
        ed3 = findViewById(R.id.editText3);

        Button b1 = findViewById(R.id.button);
        sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

        b1.setOnClickListener(v -> {
            String n = ed1.getText().toString();
            String ph = ed2.getText().toString();
            String e = ed3.getText().toString();

            SharedPreferences.Editor editor = sharedpreferences.edit();

            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.apply();
            Toast.makeText(MainActivity.this, "ممنون ذخیره شد", Toast.LENGTH_LONG).show();
        });
    }


}

کدهای فایل activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="28dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="Shared Preference "
        android:textSize="35dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
        android:text="7Cloner.com"
        android:textColor="#009688"
        android:textSize="35dp" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="67dp"
        android:hint="نام" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:hint="گذرواژه" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText2"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:hint="آدرس ایمیل" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText3"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="ذخیره سازی" />

</RelativeLayout>

پس از قراردادن کدهای بالا درون پروژه تان میتوانید آن را اجرا کنید و نتیجه را ببینید :

AndroidSharedPreference

در بالا تصویر نتیجه کار را نشان داده ایم که یک مقداری را ذخیره کرده ایم و مجدد آن را بازیابی کرده ایم.

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

مقالات پیشنهادی

پی اچ پی - PHP

با استفاده از این زبان می توان وب سایت های پویا طراحی کرد, این زبان می تواند با HTML ادغام شود, در حقیقت یک زبان اسکریپتی متن باز و رایگان است. یعنی زمانی که سرور درخواست ...


۹۴۸
۰
۱۳ آذر ۱۳۹۹

اندروید

اندروید یک سیستم عامل می باشد که توسط گوگل توسعه داده میشود, این سیستم عامل بر پایه نسخه ی اصلاح شده ی هسته ی لینوکس و دیگر نرم افزار های متن باز طراحی شده است و ...


۱۰۵۵
۰
۲۹ آبان ۱۳۹۹

هک و امنیت

در تعریف کلی این واژه می توان گفت که به پیدا کردن راه های نفوذ به یک حریم شخصی و استفاده غیر مجاز از آن را هک می نامیم. هدف از هک می تواند ...


۹۶۰
۰
۱۳ آذر ۱۳۹۹

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...


۹۱۴
۰
۱۲ آذر ۱۳۹۹