【发布时间】:2020-10-09 00:40:57
【问题描述】:
我正在开发 Android Studio (Java),并将 Google Firebase 整合到我的项目中。在我的主要活动中,我实例化了一个 firebase 用户,并将所有相关信息存储在自定义“用户”类中。
public class User implements Serializable{
FirebaseUser user;
FirebaseAuth mAuth;
String uid;
public User()
{
System.out.println("Creating User");
mAuth = FirebaseAuth.getInstance();
user = mAuth.getCurrentUser();
uid = user.getUid();
}
}
我有一个多标签设置,其中每个标签都是一个片段。每个片段都需要访问代表当前登录用户的唯一用户对象,因此我将用户对象传递给每个片段。为了做到这一点,它需要被序列化,它就是这样。这是其中的一个片段:
public class tab_list extends Fragment {
private static final String ARG_PARAM1 = "user_List";
private User user;
public tab_list() {
// Required empty public constructor
}
public static tab_list newInstance(User u) {
tab_list fragment = new tab_list(); // This calls the empty constructor above
Bundle args = new Bundle();
args.putSerializable(ARG_PARAM1, u);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
user = (User) getArguments().getSerializable(ARG_PARAM1);
}
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
//Do Stuff
}
}
一切都很好!该选项卡可以访问存储在用户中的数据,我也可以做我需要的一切,直到应用程序最终进入后台。如果我的手机通过切换应用程序或拉下托盘或让屏幕休眠将应用程序置于后台,则应用程序崩溃并出现以下错误:
“Parcelable 在写入可序列化对象时遇到 IOException” . . . 引起:java.io.NotSerializableException: com.google.firebase.auth.internal.zzn
对我来说,这意味着 firebase auth 的部分也需要序列化。这是正确的解释吗?如果是这种情况,我觉得这将是一个很长的序列化兔子洞,如果它甚至可以序列化我不控制的类(并且不想改变)。有没有解决的办法?这样做的正确方法是什么?
感谢您的宝贵时间。
【问题讨论】:
标签: java android firebase serialization firebase-authentication