آموزش کامل Session در اندروید - به همراه مثال
زمانی که می خواهید اطلاعات کاربر را خارج از اپلیکیشن ذخیره کنید، session نقش پر رنگی در کمک به شما ایفا می کند ، به طوری که اگر کاربر بعد ها از اپلیکیشن شما استفاده کرد، می توانید به راحتی جزئیات مربوط به کاربر را برگردانده و متناسب با آن عمل کنید.
این کار به روش های زیادی انجام می شود، اما ساده ترین و بهترین راه انجام این کار ، Shared Preferences می باشد.
معرفی روش Shared Preferences
این اپلیکیشن به شما اجازه می دهد تا اطلاعات را به شکل جفت key/value ذخیره و بازیابی کنید.
برای استفاده از shared preferences باید متد ()getSharedPreferences را فراخوانی کنید که بعد از اشاره به فایلی که شامل مقادیر Preference است، یک نمونه از SharedPreference را گزارش می دهد.
SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
شما می توانید با استفاده از کلاس SharedPreferences.Editor در SharedPreference چیزی ذخیره کنید. شما متد edit را از نمونه ی SharedPreference فرامی خوانید و آن را در یک آبجکت editor دریافت خواهید کرد.
سینتکس آن مانند زیر می باشد.
Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();
علاوه بر متد putString متد های دیگری در کلاس editor وجود دارند که اجرای داده را در داخل shared preferences برای شما امکان پذیر می کنند.
این متد ها عبارتند از :
-
()apply : این متد یک متد نظری می باشد. این متد تغییرات شما را از editor تا آبجکت sharedPreference که فرا خواندید، اعمال می کند.
-
()clear : این متد همه ی مقادیر را از editor حذف می کند.
-
(remove(String key : این متد مقداری را که کلید آن به عنوان یک پارامتر منتقل شده است، حذف می کند.
-
(putLong(String key, long value : این متد یک long value را در یک ویرایشگر preference ذخیره خواهد کرد.
-
(putInt(String key, int value : این متد یک integer را در یک ویرایشگر preference ذخیره خواهد کرد.
-
(putFloat(String key, float value : این متد یک مقدار معلق را در یک ویرایشگر preference ذخیره خواهد کرد.
مدیریت Session از طریق Shared Preferences
برای اینکه مدیریت Session را از طریق shared preferences انجام دهیم، لازم است که مقادیر یا داده های ذخیره شده در shared preferences در متد onResume را چک کنیم. اگر ما داده ای نداشته باشیم، برنامه را از ابتدا، انگار که تازه نصب شده است، آغاز می کنیم. اما اگر داده ای داشته باشیم ، از زمانی آن را آغاز می کنیم که کاربر آن را رها کرده است.
این مسئله در مثال زیر توضیح داده شده است.
مثال:
مثال زیر استفاده از Session Management را توضیح می دهد. این مثال یک اپلیکیشن (basic application) پایه ایجاد می کند که به ما اجازه می دهد برای اولین بار وارد سیستم شویم . سپس وقتی بدون log out از برنامه خارج شویم ، در هنگام ورود مجدد به اپلیکیشن ، از همان قسمت قبل آغاز به کار خواهید کرد. اما اگر log out را انجام دهیم به صفحه ی ورود بازگردانده می شویم.
برای آزمایش این مثال لازم است آن را روی یک دستگاه واقعی یا یک مقلد اجرا کنید.
- برای ایجاد یک برنامه ی اندروید از اندروید استودیو تحت پکیج com.example.sairamkrishna.myapplication استفاده می کنیم
- فایل src/MainActivity.java را برای افزودن کد session تغییر دهید.
- یک اکتیویتی جدید ایجاد کنید و آن را با عنوان Welcome.java نام گذاری کنید. این فایل را ویرایش کنید تا progress code را به کد session اضافه کنید.
- فایل res/layout/activity_main.xml را تغییر دهید تا کد XML مربوطه را به آن اضافه کنید.
- برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و اپلیکیشن را روی آن نصب کنید و نتایج را بررسی کنید.
محتوای MainActivity.java :
package com.example.sairamkrishna.myapplication;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText ed1,ed2,ed3;
Button b1;
Intent in;
public static final String MyPREFERENCES = "MyPrefs" ;
public static final String Name = "nameKey";
public static final String Phone = "phoneKey";
public static final String Email = "emailKey";
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1=(EditText)findViewById(R.id.editText);
ed2=(EditText)findViewById(R.id.editText2);
ed3=(EditText)findViewById(R.id.editText3);
b1=(Button)findViewById(R.id.button);
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View 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.commit();
in = new Intent(MainActivity.this,second_main.class);
startActivity(in);
}
});
}
}
محتوای second_main.java :
package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class second_main extends Activity {
Button bu=null;
Button bu2=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_main);
bu=(Button)findViewById(R.id.button2);
bu2=(Button)findViewById(R.id.button3);
}
public void logout(View view){
SharedPreferences sharedpreferences = getSharedPreferences(MainActivity.MyPREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.commit();
}
public void close(View view){
finish();
}
}
محتوای 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Shared Preference"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="35dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials Point"
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:textSize="35dp"
android:textColor="#ff16ff01" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/textView2"
android:layout_marginTop="67dp"
android:hint="Name"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Pass" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:layout_below="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Email" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="login"
android:id="@+id/button"
android:layout_below="@+id/editText3"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp" />
</RelativeLayout>
محتوای second_main.xml :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Logout"
android:onClick="logout"
android:id="@+id/button2"
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="191dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close"
android:onClick="close"
android:id="@+id/button3"
android:layout_below="@+id/button2"
android:layout_centerHorizontal="true"
android:layout_marginTop="69dp" />
</RelativeLayout>
محتوای Strings.xml :
<resources>
<string name="app_name">My Application</string>
</resources>
محتوای AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".second"></activity>
</application>
</manifest>
می خواهیم اپلیکیشن مورد نظر را اجرا کنیم . فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای اپلیکیشن از اندروید استودیو ، یکی از فایل های اکتیویتی پروژه را باز کرده و روی آیکون Run از نوار ابزار کلیک کنید. قبل از شروع برنامه ، اندروید استودیو پنجره ای زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
نام کاربری و پسورد خود را تایپ کرده و روی دکمه ی login کلیک کنید. مانند تصویر زیر :
به محض اینکه روی دکمه ی login کلیک کنید، این صفحه ی خوش آمدگویی برای شما باز خواهد شد. اکنون اطلاعات ورود شما در shared preferences ذخیره شده است.
این فصل در یک نگاه:
فصل رایگان مربوط به مفاهیم php و api نویسی …
توضیحات کلی مجموعه: دوره متخصص اندروید کلیک سایت کامل ترین دوره جامع برنامه نویسی اندروید(حتما دمو دوره را ببینید) چرا دوره متخصص جایگزین دوره صفرتاصد اندروید شد؟ کلیک سایت تصمیم گرفت …این فصل در یک نگاه:
آموزش ساخت اپلیکیشن علی بابا-آموزش کالبک ها-…
دوره "متخصص" جایگزین دوره صفرتاصد اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دوره صفرتاصد شده است؟چرا باید دوره متخص…این فصل در یک نگاه:
عملیات شبیه فیلتر-ساخت الرت دیالوگ وچیدمان براساس فروش-مرتب سازی-نحوه خطایابی-استفاده از bottom sheet در اندروید-سبد خری…
آموزش ساخت اپلیکیشن اندروید دیجی کالا : ساخت برنامه اندروید یکی از پر طرفدارترین آموزش های کلیک سایت می باشد. با توجه به فراگیر شدن سیستم اندروید و آشنایی افراد با این سیستم ، برنامه های ک…این فصل در یک نگاه:
…
در این دوره آموزشی ، برنامه نویسی اندروید و ios را با استفاده از زامارین خواهیم آموخت. همچنین به صورت کاملا پروژه محور ، اپلیکیشن فروشگاهی مشابه دیجی کالا را پیاده سازی خواهیم کرد. در انته…این فصل در یک نگاه:
…
توضیحات کلی مجموعه: سرفصل های دوره آموزش ساخت اپلیکیشن فیلیمو معرفی اهداف دوره مقدمه و بررسی پیش نیازهای دوره بررسی جزئی و …این فصل در یک نگاه:
آموزش ساخت api key-آموزش استفاده از GPS گوشی ونمایش مکان شخص برروی نقشه-متصل کردن چند نقطه برروی نقشه با خط-رسم چند ضلعی…
حتما دمو دوره رو ببینید اولین دوره کامل کار با نقشه گوگل ومسیریابی در نقشه گوگل(این اموزش مشابه فارسی ندارد) اموزش کار با نقشه گوگل در برنامه نویسی اندروید یکی از مهم ترین مباحث هست که …این فصل در یک نگاه:
ساخت انواع نوتیفیکیشن ها -کار با وب سرویس پوشه-ارسال نوتیفیکیشن با سرویس پوشه-ارسال نوتیفیکیشن با one signal-اموزش کار ب…
با این مجموعه همه چیز در مورد نوتیفیکیشن و فایربیس رو خواهید اموخت یکی از مواردی که در استخدام کاربران در شرکت های برنامه نویسی بسیار موثر هست مبحث کار با firebase هست که ما دراین دوره ام…این فصل در یک نگاه:
لیست کردن فایل های صوتی ویدیویی گوشی-طاحی متریال وزیبا-استفاده از تب بندی-حرکت سیک بار همراه با اهنگ وزمان-ست کردن زمان …
توضیحات کلی مجموعه: اموزش ساخت یک موزیک پلیر و ویدیو پلیر ح رفه ای که کاملا کاربردی است و قابلیت نصب روی گوشی های مختلف را دارد از جمله امکانات این اپلیکیشن: لیست کردن فایل های صوتی وید…این فصل در یک نگاه:
اموزش ساخت اپلیکیشن کافه بازار-اشتراک گذاری اپلیکیشن-کار با رتروفیت-کاربا ران تیم پرمیشن- کار با فرگمنت ها-کار با sqlite…
دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دو…این فصل در یک نگاه:
پرداخت درون برنامه ای بازار-اموزش فروش سکه-اموزش فروش اشتراک-اموزش فروش نسخه پولی-اموزش چک کردن خرید کردن کاربر-اموزش کا…
دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…این فصل در یک نگاه:
آموزش کامل پیکربندی mvp-اموزش اتصال با سرور با رتروفیت و rxjava-اموزش کار با دیتابیس-آموزش کار با bottom navigation-اموز…
دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…این فصل در یک نگاه:
این آموزش در یک فصل شامل 35 جلسه آموزش تصویری به همراه سورس کد ارائه شده است.…
سرفصل ها مقدمه و معرفی متد آموزشی بررسی جزئی و خلاصه موارد موردنیاز پیش از آموزش شامل: کار با ویوها، کار با کتابخانه های مختلف و ... …این فصل در یک نگاه:
آموزش ارسال پیامک با سامانه مدیر پیامک-ارسال کد فعال سازی برنامه با پیامک-اعتبارسنجی کد فعال سازی-ثبت نام در اپلیکیشن با…
دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…این فصل در یک نگاه:
آموزش ارسال توکن در اندروید -اموزش امنیت در برنامه نویسی اندروید-اموزش ارسال توکن در هدر در اندروید-اموزش ساخت token -ام…
توضیحات کلی مجموعه: دموی دوره را حتما ببینید دوره امنیت و دیزاین پترن در برنامه نویسی اندروید که شامل دو فصل هست. فصل اول شامل اموزش singletone design patern-builder design patern-command …این فصل در یک نگاه:
در فصل دوم این دوره بیشتر میپردازیم به کار با کتابخانه ها و موارد پیشرفته تر مانند دوربین ، ضبط صدا، دیتا بیس ، و .....…
توضیحات کلی مجموعه: سلام خدمت کلیک سایتی های عزیز مجموعه آموزشی صفر تا صد برنامه نویسی اندروید در محیط بیسیک 4 اندروید (basic 4 android) معرفی محیط بیسیک 4 اندروید محیط b4a تحت کمپانی A…این فصل در یک نگاه:
فصل جدید و اپدیت های جدید-آموزش کار با برودکست ریسیور در کاتلین-آموزش چک کردن اتصال به اینترنت در کاتلین-اموزش اپلود کرد…
دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…این فصل در یک نگاه:
نحوه ارورگیری-رفع ایراد-رفع مشکل-اشتراک گذاری مطالب-ساخت اکتیویتی تنظیمات-اشتراک گذاری مطالب-جستجو کردن…
دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…این فصل در یک نگاه:
پرداخت درون برنامه ای بازار با کاتلین…
دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…این فصل در یک نگاه:
اپلود تصاویر روی سرور نود جی اس-کار با کانال در چت- ساخت کانال-ساخت گروه-تفاوت کانال و گروه-انلاین بودن-ارسال تصاویر در …
توضیحات کلی مجموعه آموزش اندروید اپلیکیشن چت مشابه تلگرام( با استفاده از Socket IO ): دموی مجموعه را حتما ببینید دراین دوره سعی میشود بسیاری از اپشن هایی که اپلیکیشن موبوگرام داراست ر…این فصل در یک نگاه:
در این فصل آپدیت های مربوط به دوره را قرار میدهیم…
با سلام و خسته نباشد خدمت کلیک سایتی های عزیز در ادامه با توضیحات مختصری درمورد دوره ی react native با ما همراه باشید: React Native چیست؟ قطعا یکی از آرزوهای برنامه نویسان این میباشد که ب…