ParseUser实例已更改

时间:2019-01-15 10:10:19

标签: java android parse-platform

下面是我的应用程序中的代码段。请原谅回调地狱。

user1.saveInBackground()已执行。

我得到了当前用户的实例,并在日志中先显示了它,然后显示了正确的值。然后,myQuery()方法通过回调进行调用。

User user1 = (User) ParseUser.getCurrentUser();
Timber.d("User1 = %s", user1);
Timber.d("User1 display = %s", user1.getDisplayName());

myQuery(new MyCallback() {
  @Override
  public void onSuccess() {
    User user5 = (User) ParseUser.getCurrentUser();
    Timber.d("User5 = %s", user5);
    Timber.d("User5 display = %s", user5.getDisplayName());
  }
  @Override
  public void onFailed(Throwable t) {
    Timber.e(t);
  }
});

public void myQuery(@NonNull final MyCallback callback) {

  ParseQuery<MyParseObject> myQuery = ParseQuery.getQuery(MyParseObject.class);
  User user2 = (User) ParseUser.getCurrentUser();
  Timber.d("User2 = %s", user2);
  Timber.d("User2 display = %s", user2.getDisplayName());

  myQuery.findInBackground(new FindCallback<MyParseObject>() {
    @Override 
    public void done(List<MyParseObject> objects, ParseException e) {
    if (objects == null) return;
    User user3 = (User) ParseUser.getCurrentUser();
    Timber.d("User3 = %s", user3);
    Timber.d("User3 display = %s", user3.getDisplayName());

    ParseObject.pinAllInBackground(objects, new SaveCallback() {
      @Override
      public void done(ParseException e) {
      if (e == null) {
        User user4 = (User) ParseUser.getCurrentUser();
        Timber.d("User4 = %s", user4);
        Timber.d("User4 display = %s", user4.getDisplayName());

        callback.onSuccess();
      } else {
        callback.onFailed(e);
      }
      }
    });
    }
  });
}

myQuery()方法中,我再次为用户实例调用ParseUser.getCurrentUser(),并且值仍然相同。但是在myQuery.findInBackground()回调中,用户实例的内存地址已更改(请参阅日志)。用户2的地址与用户3的地址不同,用户3到用户5的内存地址相同。

日志中没有显示异常。

日志

User1 = com.my.test._parse._model.User@42057618
User1 display = test_display_name
User2 = com.my.test._parse._model.User@42057618
User2 display = test_display_name
User3 = com.my.test._parse._model.User@42a5ded0
User3 display = 
User4 = com.my.test._parse._model.User@42a5ded0
User4 display = 
User5 = com.my.test._parse._model.User@42a5ded0
User5 display = 

任何想法为何更改了当前用户实例?我可能错过了一些东西。

0 个答案:

没有答案