Android 存储全局对象

在Android开发中,有时我们需要在整个应用程序中共享某个对象,比如用户登录信息、配置信息等。这时就需要将这个对象保存为全局对象,以便在任何地方都能访问到它。本文将介绍如何在Android中存储全局对象,并提供代码示例。

存储全局对象的方法

使用Application类

Android中的Application类是一个全局的单例,可以用来存储全局对象。我们可以继承Application类,并在其中定义全局变量来保存我们需要的对象。

使用SharedPreferences

SharedPreferences是Android中用来保存小量数据的API,我们可以将需要的对象序列化后保存到SharedPreferences中,在需要的时候再取出来。

使用单例模式

我们也可以使用单例模式来保存全局对象,通过静态变量或静态方法来访问对象。

代码示例

使用Application类

public class MyApplication extends Application {
    private User currentUser;

    public User getCurrentUser() {
        return currentUser;
    }

    public void setCurrentUser(User user) {
        this.currentUser = user;
    }
}

在AndroidManifest.xml中声明使用自定义的Application类:

<application
    android:name=".MyApplication"
    ...>
    ...
</application>

使用SharedPreferences

public class SharedPreferenceUtil {
    private static final String PREF_NAME = "MyPref";
    private static final String USER_KEY = "user";

    public static void saveUser(Context context, User user) {
        SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(USER_KEY, new Gson().toJson(user));
        editor.apply();
    }

    public static User getUser(Context context) {
        SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
        String json = sharedPreferences.getString(USER_KEY, null);
        return new Gson().fromJson(json, User.class);
    }
}

使用单例模式

public class UserSingleton {
    private static UserSingleton instance;
    private User currentUser;

    private UserSingleton() {
    }

    public static UserSingleton getInstance() {
        if (instance == null) {
            instance = new UserSingleton();
        }
        return instance;
    }

    public User getCurrentUser() {
        return currentUser;
    }

    public void setCurrentUser(User user) {
        this.currentUser = user;
    }
}

应用场景

旅行App中,用户登录后可能需要在整个应用中都能访问到用户的信息。我们可以将用户信息保存为全局对象,便于在不同页面中使用。

journey
    title 用户登录流程
    section 用户登录
        用户输入用户名密码
        登录成功后获取用户信息
        将用户信息保存为全局对象
    section 浏览旅行信息
        在不同页面展示用户信息

序列图

sequenceDiagram
    participant User
    participant LoginActivity
    participant MainActivity
    User->>LoginActivity: 输入用户名密码
    LoginActivity->>User: 验证用户信息
    LoginActivity->>MainActivity: 登录成功
    MainActivity->>MainActivity: 获取用户信息
    MainActivity->>User: 保存用户信息为全局对象

通过以上的方法,我们可以在Android应用中方便地存储全局对象,并在需要的地方访问到这些对象。这样可以提高代码的灵活性和可维护性,让开发更加高效。希望本文对您有所帮助!