کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش مدیریت Session اندروید

 

clip_image001

دوره آموزش برنامه نویسی اندروید

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

 

آموزش مدیریت دوره اندروید

زمانی که می خواهید داده ی یوزر را خارج از برنامه ذخیره کنید، session به شما کمک می کند، طوریکه اگر یوزر بعدها از برنامه ی شما استفاده کرد، می توانید به راحتی جزئیات مربوط به یوزر را برگردانده و متناسب با آن عمل کنید.

این کار به روش های زیادی انجام می شود، اما ساده ترین و بهترین راه انجام این کار، Shared Preferences می باشد.

Shared Preferences

این برنامه به شما اجازه می دهد تا داده را به شکل جفت key/value ذخیره و بازیابی کنید. برای استفاده از shared preferences باید روش getSharedPreferences()  را فرابخوانید که با اشاره به فایلی که  شامل مقادیر Preference است، یک نمونه SharedPreference  را گزارش می دهد.

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);‎‎

 

شما می توانید با استفاده از گروه SharedPreferences.Editor در SharedPreference چیزی ذخیره کنید. شما روش ویرایش را از نمونه ی SharedPreference فرامی خوانید و آن را در یک آبجکت ویرایشگر دریافت خواهید کرد. ترکیب آن مانند زیر می باشد.

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

 

علاوه بر روش putString روش های دیگری در گروه ویرایشگر وجود دارند که اجرای داده را در داخل shared preferences  برای شما امکام پذیر می کنند. این روش ها در زیر ارائه شده اند.

ردیف

Mode and description

1

apply()

این روش یک روش نظری می باشد. این روش تغییرات شما را از ویرایشگر تا آبجکت sharedPreference  که فرا خواندید، پس می گیرد.

2

clear()

این روش همه ی مقادیر را از ویرایشگر حذف می کند.

3

remove(String key)

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

4

putLong(String key, long value)

این روش یک مقدار بلند را در یک  ویرایشگر preference  ذخیره خواهد کرد.

5

putInt(String key, int value)

این روش یک مقدار کامل را در یک ویرایشگر preference  ذخیره خواهد کرد.

6

putFloat(String key, float value)

این روش یک مقدار معلق را در یک ویرایشگر preference ذخیره خواهد کرد.

 

مدیریت Session  از طریق Shared Preferences

برای اینکه مدیریت Session را از طریق shared preferences انجام دهیم، لازم است که مقادیر یا داده های ذخیره شده در shared preferences در روش onResume را چک کنیم. اگر ما داده نداشته باشیم، برنامه را از ابتدا، انگار که تازه نصب شده است، آغاز می کنیم. اما اگر داده را به دست آوردیم، از زمانی آن را آغاز می کنیم که یوزر آن را رها کرده است. این مسئله در مثال زیر توضیح داده شده است.

 

مثال

مثال زیر استفاده از Session Management را توضیح می دهد. یک برنامه ی پایه ایجاد می کند که به شما اجازه می دهد برای اولین بار وارد سیستم شوید. سپس وقتی بدون log out از برنامه خارج شوید، در هنگام ورود مجدد به برنامه از همان قسمت قبل آغاز به کار خواهید کرد. اما اگر log out را انجام دهید به صفحه ی ورود بازگردانده می شوید.

برای آزمایش این مثال لازم است آن را روی یک دستگاه واقعی یا یک مقلد اجرا کنید.

مراحل

توضیحات

1

برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان  SessionManagement  تحت بسته ی com.example.sessionmanagement نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.

2

فایل src/MainActivity.java را برای افزودن کد session تغییر دهید.

3

یک فعالیت جدید ایجاد کنید و آن را با عنوان Welcome.java نام گذاری کنید. این فایل را ویرایش کنید تا کد پیشروی را به کد session اضافه کنید.

4

فایل res/layout/activity_main.xml را تغییر دهید تا کد XML مربوطه را به آن اضافه کنید.

5

فایل res/layout/activity_welcome.xml را تغییر دهید تا کد XML مربوطه را اضافه کنید.

6

فایل res/values/string.xml را تغییر دهید تا یک پیام به عنوان یک رشته ی ثابت اضافه کنید.

7

برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن نصب کنید و نتایج را بررسی کنید.

 

در اینجا محتوای src/com.example.sessionmanagement/MainActivity.java  را مشاهده می کنید.

package com.example.sessionmanagement;
       
import android.app.Activity;
       
import android.content.Context;
       
import android.content.Intent;
       
import android.content.SharedPreferences;
       
import android.content.SharedPreferences.Editor;
       
import android.os.Bundle;
       
import android.view.Menu;
       
import android.view.View;
       
import android.widget.EditText;
public class MainActivity extends Activity {
          
private EditText username,password;
          
public static final String MyPREFERENCES = "MyPrefs" ;
          
public static final String name = "nameKey";
          
public static final String pass = "passwordKey";
           SharedPreferences
sharedpreferences;
           @Override
          
protected void onCreate(Bundle savedInstanceState) {
                     
super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_main);
                     
username = (EditText)findViewById(R.id.editText1);
                     
password = (EditText)findViewById(R.id.editText2);
                   }
                   @Override
          
protected void onResume() {
                     
sharedpreferences=getSharedPreferences(MyPREFERENCES,
                              Context.MODE_PRIVATE);
                     
if (sharedpreferences.contains(name))
                      {
                             
if(sharedpreferences.contains(pass)){
                                         Intent i =
new Intent(this,com.example.sessionmanagement.
                                                 Welcome.
class);
                                         startActivity(i);
                                      }
                              }
                     
super.onResume();
                   }
                  
public void login(View view){
                      Editor editor =
sharedpreferences.edit();
                      String u =
username.getText().toString();
                      String p =
password.getText().toString();
                      editor.putString(
name, u);
                      editor.putString(
pass, p);
                      editor.commit();
                      Intent i =
new Intent(this,com.example.
                              sessionmanagement.Welcome.
class);
                      startActivity(i);
                   }
                   @Override
          
public boolean onCreateOptionsMenu(Menu menu) {
                  
// Inflate the menu; this adds items to the action bar if it is present.
               
   getMenuInflater().inflate(R.menu.main, menu);
                  
return true;
                   }
                }

در اینجا محتوای src/com.example.sessionmanagement/Welcome.java را مشاهده می کنید.

package com.example.sessionmanagement;
       
import android.app.Activity;
       
import android.content.Context;
       
import android.content.SharedPreferences;
       
import android.content.SharedPreferences.Editor;
       
import android.os.Bundle;
       
import android.view.Menu;
       
import android.view.View;
public class Welcome extends Activity {
           @Override
          
protected void onCreate(Bundle savedInstanceState) {
                     
super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_welcome);
                   }
                   @Override
          
public boolean onCreateOptionsMenu(Menu menu) {
                     
// Inflate the menu; this adds items to the action bar if it is present.
               
      getMenuInflater().inflate(R.menu.welcome, menu);
                     
return true;
                   }
                  
public void logout(View view){
                      SharedPreferences sharedpreferences = getSharedPreferences
                      (MainActivity.MyPREFERENCES, Context.MODE_PRIVATE);
                      Editor editor = sharedpreferences.edit();
                      editor.clear();
                      editor.commit();
                      moveTaskToBack(
true);
                      Welcome.
this.finish();
                   }
                  
public void exit(View view){
                      moveTaskToBack(
true);
                      Welcome.
this.finish();
                   }
                }

در اینجا محتوای activity_main.xml می باشد.

<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:paddingbottom="@dimen/activity_vertical_margin"

                 android:paddingleft="@dimen/activity_horizontal_margin"

                 android:paddingright="@dimen/activity_horizontal_margin"

                 android:paddingtop="@dimen/activity_vertical_margin"

                 tools:context=".MainActivity">

   

       <edittext android:id="@+id/editText2"

                   android:layout_width="wrap_content"

                   android:layout_height="wrap_content"

                   android:layout_alignright="@+id/editText1"

                   android:layout_below="@+id/textView2"

                   android:ems="10"

                   android:inputtype="textPassword">

       

           </EditText>

 

           <textview android:id="@+id/textView1"

                      android:layout_width="wrap_content"

                      android:layout_height="wrap_content"

                      android:layout_alignparenttop="true"

                      android:layout_margintop="52dp"

                      android:text="@string/Username"

                      android:textappearance="?android:attr/textAppearanceMedium" />

 

           <edittext android:id="@+id/editText1"

                       android:layout_width="wrap_content"

                       android:layout_height="wrap_content"

                       android:layout_alignparentright="true"

                       android:layout_aligntop="@+id/textView1"

                       android:layout_marginright="16dp"

                       android:layout_margintop="27dp"

                       android:ems="10">

           

                  <requestfocus />

               </EditText>

 

               <textview android:id="@+id/textView2"

                           android:layout_width="wrap_content"

                           android:layout_height="wrap_content"

                           android:layout_alignright="@+id/textView1"

                           android:layout_below="@+id/editText1"

                           android:text="@string/Password"

                           android:textappearance="?android:attr/textAppearanceMedium" />

 

               <textview android:id="@+id/textView3"

                           android:layout_width="wrap_content"

                           android:layout_height="wrap_content"

                           android:layout_above="@+id/editText1"

                           android:layout_centerhorizontal="true"

                           android:layout_marginbottom="22dp"

                           android:text="@string/Signin"

                           android:textappearance="?android:attr/textAppearanceMedium" />

 

               <button android:id="@+id/button1"

                         android:layout_width="wrap_content"

                         android:layout_height="wrap_content"

                         android:layout_below="@+id/editText2"

                         android:layout_centerhorizontal="true"

                         android:layout_margintop="45dp"

                         android:onclick="login"

                         android:text="@string/Login" />

           

</relativelayout>

در اینجا محتوای activity_welcome.xml  می باشد.

<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:paddingbottom="@dimen/activity_vertical_margin"

                 android:paddingleft="@dimen/activity_horizontal_margin"

                 android:paddingright="@dimen/activity_horizontal_margin"

                 android:paddingtop="@dimen/activity_vertical_margin"

                 tools:context=".Welcome">

 

       <button android:id="@+id/button1"

                 android:layout_width="wrap_content"

                 android:layout_height="wrap_content"

                 android:layout_alignparenttop="true"

                 android:layout_centerhorizontal="true"

                 android:layout_margintop="146dp"

                 android:onclick="logout"

                 android:text="@string/logout" />

 

       <textview android:id="@+id/textView1"

                   android:layout_width="wrap_content"

                   android:layout_height="wrap_content"

                   android:layout_alignleft="@+id/button1"

                   android:layout_alignparenttop="true"

                   android:layout_margintop="64dp"

                   android:text="@string/title_activity_welcome"

                   android:textappearance="?android:attr/textAppearanceLarge" />

 

       <button android:id="@+id/button2"

                 android:layout_width="wrap_content"

                 android:layout_height="wrap_content"

                 android:layout_below="@+id/button1"

                 android:layout_centerhorizontal="true"

                 android:layout_margintop="43dp"

                 android:onclick="exit"

                 android:text="@string/exit" />

</relativelayout>

در اینجا محتوای Strings.xml را مشاهده می کنید.

<?xml version="1.0" encoding="utf-8" ?>

<resources>

   

       <string name="app_name">SessionManagement</string>

       <string name="action_settings">Settings</string>

       <string name="hello_world">Hello world!</string>

       <string name="Username">Username</string>

       <string name="Password">Password</string>

       <string name="Signin">Sign In</string>

       <string name="Login">Login</string>

       <string name="logout">Logout</string>

       <string name="title_activity_welcome">Welcome</string>

       <string name="exit">Exit without logout</string> 

</resources>

در اینجا محتوای AndroidManifest.xml می باشد.

‎‎‎‎‎<?xml version="1.0" encoding="utf-8" ?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

           package="com.example.sessionmanagement"

           android:versioncode="1"

           android:versionname="1.0">

   

 

       <uses-sdk android:minsdkversion="8"

                  android:targetsdkversion="17" />

 

       <application android:allowbackup="true"

                      android:icon="@drawable/ic_launcher"

                      android:label="@string/app_name"

                      android:theme="@style/AppTheme">

       

              <activity android:name="com.example.sessionmanagement.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="com.example.sessionmanagement.Welcome"

                              android:label="@string/title_activity_welcome">

               

                      </activity>

                   </application>

               

</manifest>

اجازه بدهید برنامه ی  Session Management شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.

نام کاربری و پسورد خود را تایپ کرده و روی دکمه ی login کلیک کنید. مانند تصویر زیر.

به محض اینکه روی دکمه ی login کلیک کنید، این صفحه ی خوش آمدگویی برای شما باز خواهد شد. اکنون اطلاعات ورود شما در shared preferences ذخیره شده است.

اکنون روی دکمه ی Exit witout logout کلیک کنید، پس از آن به صفحه ی ابتدایی بازخواهید گشت. این مسئله در صفحه ی زیر نمایش داده شده است.

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

اکنون دکمه ی logout را انتخاب کنید، این بار برنامه بسته خواهد شد. حالا برنامه را دوباره باز کنید، از آنجایی که از session خارج شده اید ابتدا وارد صفحه ی آغازین ورود خواهید شد. این مسئله نیز در تصویر زیر نمایش داده شده است.

1394/07/27 4346 1733
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...