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