Giới thiệu
Trong Android, có 3 cách phổ biến để chia sẻ dữ liệu toàn cục (global) giữa các Activity, Fragment, Service:
- Singleton Pattern (Khuyên dùng cho dữ liệu đơn giản).
- Application Class (Chuẩn, vòng đời dài nhất).
- SharedPreferences (Lưu bền vững qua lần khởi động).
Cách 1: Singleton Pattern (Ví dụ gốc)
Bước 1: Tạo dự án & Giao diện
Layout: một TextView hiển thị giá trị, click để cập nhật.
Bước 2: Class Singleton (src/singleToneClass.java)
package com.example.myapplication;
public class SingleToneClass { // Tên class viết hoa chữ cái đầu theo quy ước
private String data;
private static final SingleToneClass INSTANCE = new SingleToneClass();
private SingleToneClass() {} // Constructor private
public static SingleToneClass getInstance() {
return INSTANCE;
}
public void setData(String data) {
this.data = data;
}
public String getData() {
return data;
}
}
Bước 3: MainActivity.java
package com.example.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView actionEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionEvent = findViewById(R.id.actionEvent);
actionEvent.setText("Click để set giá trị");
actionEvent.setOnClickListener(v -> {
SingleToneClass instance = SingleToneClass.getInstance();
instance.setData("Tutorialspoint.com");
actionEvent.setText(instance.getData());
});
}
}
Cách 2: Application Class (Khuyên dùng cho app thực tế)
Tạo class kế thừa Application
package com.example.myapplication;
import android.app.Application;
public class MyApplication extends Application {
private String globalData;
public String getGlobalData() {
return globalData;
}
public void setGlobalData(String globalData) {
this.globalData = globalData;
}
}
Khai báo trong AndroidManifest.xml
<application
android:name=".MyApplication"
... >
...
</application>
Sử dụng ở đâu cũng được
MyApplication app = (MyApplication) getApplication();
app.setGlobalData("Giá trị toàn cục");
String value = app.getGlobalData();
Cách 3: SharedPreferences (Lưu bền vững)
// Ghi
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
prefs.edit().putString("key", "value").apply();
// Đọc
String value = prefs.getString("key", "default");
So sánh
| Cách | Độ bền | Phạm vi | Phù hợp cho |
|---|---|---|---|
| Singleton | Chạy app | Process | Dữ liệu tạm, cache, config nhẹ |
| Application Class | Chạy app | Process | Dữ liệu chung, manager, repository |
| SharedPreferences | Vĩnh viễn | App/Device | Cài đặt, token, trạng thái user |
Chạy ví dụ Singleton
Nhấn Run. Màn hình hiển thị "Click để set giá trị". Nhấn vào → TextView đổi thành "Tutorialspoint.com".

