Android - Quản lý phiên
Phiên giúp bạn khi muốn lưu trữ dữ liệu người dùng bên ngoài ứng dụng của mình, để lần sau khi người dùng sử dụng ứng dụng của bạn, bạn có thể dễ dàng lấy lại thông tin chi tiết của họ và thực hiện tương ứng.
Điều này có thể được thực hiện bằng nhiều cách. Nhưng cách dễ nhất và đẹp nhất để làm điều này là thông quaShared Preferences.
Sở thích chia sẻ
Shared Preferences cho phép bạn lưu và truy xuất dữ liệu dưới dạng khóa, cặp giá trị. Để sử dụng các sở thích được chia sẻ, bạn phải gọi một phương thức getSharedPreferences () trả về một cá thể SharedPreference trỏ đến tệp có chứa các giá trị của tùy chọn.
SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
Bạn có thể lưu nội dung nào đó trong sharedpreferences bằng cách sử dụng lớp SharedPreferences.Editor. Bạn sẽ gọi phương thức chỉnh sửa của cá thể SharedPreference và sẽ nhận nó trong một đối tượng trình soạn thảo. Cú pháp của nó là -
Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();
Ngoài phương thức putString, có các phương thức có sẵn trong lớp trình soạn thảo cho phép thao tác dữ liệu bên trong các tùy chọn được chia sẻ. Chúng được liệt kê như sau:
Sr.No | Chế độ và mô tả |
---|---|
1 | apply() Nó là một phương pháp trừu tượng. Nó sẽ cam kết các thay đổi của bạn từ trình chỉnh sửa sang đối tượng sharedPreference mà bạn đang gọi |
2 | clear() Nó sẽ xóa tất cả các giá trị khỏi trình chỉnh sửa |
3 | remove(String key) Nó sẽ xóa giá trị có khóa đã được truyền dưới dạng tham số |
4 | putLong(String key, long value) Nó sẽ lưu một giá trị dài trong trình chỉnh sửa tùy chọn |
5 | putInt(String key, int value) Nó sẽ lưu một giá trị số nguyên trong trình chỉnh sửa tùy chọn |
6 | putFloat(String key, float value) Nó sẽ lưu một giá trị float trong một trình soạn thảo tùy chọn |
Quản lý phiên thông qua Tùy chọn được chia sẻ
Để thực hiện quản lý phiên từ các tùy chọn được chia sẻ, chúng tôi cần kiểm tra các giá trị hoặc dữ liệu được lưu trữ trong các tùy chọn được chia sẻ trong onResumephương pháp. Nếu chúng tôi không có dữ liệu, chúng tôi sẽ khởi động ứng dụng từ đầu vì nó mới được cài đặt. Nhưng nếu chúng tôi có dữ liệu, chúng tôi sẽ bắt đầu từ nơi người dùng để lại nó. Nó được minh họa trong ví dụ dưới đây -
Thí dụ
Ví dụ dưới đây minh họa việc sử dụng Quản lý phiên. Nó đóng một ứng dụng cơ bản cho phép bạn đăng nhập lần đầu tiên. Và sau đó khi bạn thoát ứng dụng mà không đăng xuất, bạn sẽ được đưa trở lại vị trí cũ nếu khởi động lại ứng dụng. Nhưng nếu bạn đăng xuất khỏi ứng dụng, bạn sẽ được đưa trở lại màn hình đăng nhập chính.
Để thử nghiệm với ví dụ này, bạn cần chạy điều này trên thiết bị thực tế hoặc trong trình giả lập.
Các bước | Sự miêu tả |
---|---|
1 | Bạn sẽ sử dụng IDE studio android để tạo ứng dụng Android theo gói com.example.sairamkrishna.myapplication. |
2 | Sửa đổi tệp src / MainActivity.java để thêm mã tiến trình để thêm mã phiên. |
3 | Tạo Hoạt động Mới và nó đặt tên là second.java. Chỉnh sửa tệp này để thêm mã tiến trình để thêm mã phiên. |
4 | Sửa đổi tệp res / layout / activity_main.xml để thêm mã XML tương ứng. |
5 | Sửa đổi tệp res / layout / second_main.xml để thêm mã XML tương ứng. |
7 | Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả. |
Đây là nội dung của 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);
}
});
}
}
Đây là nội dung của 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();
}
}
Đây là nội dung của 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>
Đây là nội dung của 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>
Đây là nội dung của Strings.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Đây là nội dung của 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>
Hãy thử chạy ứng dụng của bạn. Tôi giả sử bạn đã tạo AVD của mình trong khi thiết lập môi trường. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào
Nhập tên người dùng và mật khẩu của bạn (type anything you like, but remember what you type)và nhấp vào nút đăng nhập. Nó được hiển thị trong hình ảnh bên dưới -
Ngay sau khi bạn nhấp vào nút đăng nhập, bạn sẽ được đưa đến màn hình Chào mừng này. Bây giờ thông tin đăng nhập của bạn được lưu trữ trong các tùy chọn chia sẻ.
Bây giờ bấm vào Exit without logout và bạn sẽ được đưa trở lại màn hình chính và tệp ưu tiên được đưa ra sẽ như hình dưới đây
Nếu bạn mở tệp myPref.xml dưới dạng tệp ghi chú, nó sẽ như sau
Nếu bạn nhấp vào nút đăng xuất, nó sẽ xóa các giá trị tùy chọn. và nếu bạn đã nhập các giá trị khác nhau làm đầu vào, nó sẽ nhập các giá trị đó làm tùy chọn trong XML.