使用Singleton for Current登录移动应用程序的用户

时间:2016-09-13 13:15:21

标签: android ios

创建一个Singleton来跟踪移动应用的当前登录用户是个坏主意吗?下面的课程与我之前使用过的课程类似,但它工作得很好,但我总觉得这不是最好的做事方式。

public class LoggedInUser {

   private static LoggedInUser ourInstance = null;
   User user;

   public static LoggedInUser getInstance() {
        return ourInstance != null ? ourInstance : new LoggedInUser();
    }

    private LoggedInUser () {
        user = new User();
    }

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

    public User getUser() {
        return this.user;
    }
}

我在整个应用程序中经常使用用户的信息,有时用户对象不是很小,所以在每个视图之间传递对象也不是最好的选择。这通常的做法是什么? 用户每次使用应用程序时都必须登录,因此我也不想将信息写入手机。

1 个答案:

答案 0 :(得分:0)

Singleton是正常的。 但是你总是可以使用Application类及其变量(静态和对象)来存储数据。

public class MyApp extends Application {

public static LoggedInUser user;

@Override
    public void onCreate() {
        super.onCreate();
       user = LoggedInUser.getInstance();

//...
}

//or even
public LoggedInUser user_obj;
    }

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:largeHeap="true"
        android:name=".MyApp"
        android:icon="@drawable/iconlite"
        android:label="@string/app_alias"
        android:theme="@style/AppTheme" >

代码中的某处使用MyApp.user((MyApp)getApplication()).user_obj