Android 从分析类中删除整行

Android 从分析类中删除整行,android,parse-platform,Android,Parse Platform,如何在android中从解析用户类中删除整行?我希望用户能够从我的应用程序中删除他们的帐户,如果他们删除他们的帐户,我希望能够删除他们的整个用户行 调用用户对象上的删除方法之一:delete(),deleteFinally(),deleteInBackground(),等等 例如: ParseUser user = ParseUser.getCurrentUser(); user.deleteInBackground(); ParseUser类是ParseObject的子类,因此它具有所有相同

如何在android中从解析用户类中删除整行?我希望用户能够从我的应用程序中删除他们的帐户,如果他们删除他们的帐户,我希望能够删除他们的整个用户行

调用用户对象上的删除方法之一:
delete()
deleteFinally()
deleteInBackground()
,等等

例如:

ParseUser user = ParseUser.getCurrentUser();
user.deleteInBackground();

ParseUser类是ParseObject的子类,因此它具有所有相同的删除方法。您可以查看API参考以了解更多信息。

我想我会为您需要删除用户的稍微不同的情况提供额外的反馈。我使用Eric Amode给出的答案作为起点,但在运行测试时,我不得不删除该用户。基本目标是在用户注册后从解析数据库中删除该用户。这将使我不必在每次运行测试时都进入并删除用户。我最初在一个静态方法中使用上面的代码Eric Amode,但没有得到任何结果。因为我是在后台注册过程中创建用户的,所以我还必须在后台删除用户。其他人可能知道我应该使用的更好的方法,但下面是代码片段,其中包含了线程在后台工作时我所做的所有工作

    user.signUpInBackground(new SignUpCallback() {
                @Override
                public void done(ParseException e) {
                    dlog.dismiss();
                    if (e != null) {
                        /**
                         * Show the error message
                         */
                        Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                    } else {
                        /**
                         * Start a new intent for the dispatch activity
                         */
                        Intent intent = new Intent(RegisterActivity.this, DispatchActivity.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                        RegisterActivity.this.startActivity(intent);

                        /**
                         * Check to see if the username is ParseUser and immediately deletes from
                         * Parse database to allow repeated runs of the RegisterActivityEspressoTest
                         */
                        if(etUsername.getText().toString().equals("ParseUser")){
                            ParseUser registerTestUser = new ParseUser();
                            registerTestUser.getCurrentUser().deleteInBackground();
                        }
                    }
                }
            });

接受的答案可能会由于在delete方法之后注销/清除本地数据存储失败而产生错误

1) 根据Parse的文档,delete()并不总是足以删除和注销用户。有时,即使在delete()调用之后,用户仍然通过本地数据存储登录,这会在用户下次打开应用程序时(或者只是在应用程序下次使用getCurrentUser()方法检查当前用户时)导致错误。相反,必须在delete函数的回调中调用注销,如下所示:

ParseUser currentUser = ParseUser.getCurrentUser();
currentUser.deleteInBackground(new DeleteCallback() {
                public void done(ParseException e) {
                    if (e == null) {
                        currentUser.logOutInBackground();     
                    } else {
                        //handle the error
                    }
                }
            });
这是违反直觉的,因为如果帐户已被删除,您可能会认为不必注销,但您确实需要注销

2) 还值得注意的是,只有在对用户进行身份验证时(使用login()、signup()或getCurrentUser()API调用),才能调用delete。从解析文档中: 具体来说,除非使用身份验证方法(如登录或注册)获取ParseUser,否则无法调用任何save或delete type方法。这确保只有用户可以更改自己的数据。