事务失败绑定器 - 事务过大异常。

4

我正在尝试在我的Android应用中使用Parse.com。我正在创建注册凭据,但是我收到了TransactionTooLargeException异常。我认为这是因为我超出了我接收或提交的数据量。然而,我无法确定问题所在,因为我只想向服务器提交2个字符串。我添加了堆栈跟踪和少量代码供您参考。非常感谢任何指导!

public class ParseStarterProjectActivity extends Activity {
    // Sign Up/sign in Variables
    Button signup;
    String userName;
    String userPassword;

    EditText user;
    EditText pass;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

//      // Test Parse Object
//      ParseObject testObject = new ParseObject("TestObject");
//      testObject.put("foo", "bar");
//      testObject.saveInBackground();

        user = (EditText) findViewById(R.id.editText);
        pass = (EditText) findViewById(R.id.editText2);

        signup = (Button) findViewById(R.id.button);
        //signup = (Button) findViewById(R.id.button2);

        // Button onClick Listener
        signup.setOnClickListener(new View.OnClickListener() {
            @Override         
            public void onClick(View arg0) {
                userName = user.getText().toString();
                userPassword = pass.getText().toString();

                //send to parse
                ParseUser user = new ParseUser();
                user.setUsername(userName);
                user.setPassword(userPassword);
                user.signUpInBackground(new SignUpCallback() {
                    public void done(ParseException e) {
                        if (e == null) {
                            Toast.makeText(getApplicationContext(),
                                           "Success",
                                           Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(getApplicationContext(),
                                           "Failed",
                                           Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        });
    }
}

堆栈跟踪输出:

    17:52:54.747  15613-15613/com.parse.starter D/Error﹕ ERR: TOTAL BYTES WRITTEN: 12282164
    06-01 17:52:54.748  15613-15613/com.parse.starter E/JavaBinder﹕ !!! FAILED   BINDER TRANSACTION !!!
    06-01 17:52:54.748  15613-15613/com.parse.starter E/AndroidRuntime﹕ Error reporting crash
android.os.TransactionTooLargeException
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:496)
        at   android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:4100)
        at     com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:89)
        at com.parse.ErrorReporter.uncaughtException(ErrorReporter.java:1084)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
06-01 17:52:54.749  15613-15613/com.parse.starter I/Process﹕ Sending signal.    PID: 15613 SIG: 9

TransactionTooLargeException 表示您在一个 binder 中放入了太多的东西,可能是在启动一个活动或与服务进行通信的意图中。 - njzk2
谢谢您的回复。我知道我没有使用意图(至少我不知道),所以这一定是我的应用程序和服务器之间的通信问题。我正在使用parse.com。在编写登录凭据之前,我进行了测试,并且测试成功了。但是在添加凭据后,我开始遇到这个错误。我是否缺少某种方法来防止这种情况发生?再次感谢。 - user3078406
它是解析服务类,处理您的注册请求,用户名或密码有多长,请尝试将它们设置为最多12或10个字符,看看是否有帮助。 - Elltz
嗨Elltz,我在创建新用户时尝试输入5个字符的用户名和密码。应用程序只是抛出异常并关闭了应用程序。我有两个Java类。一个ParseApplication包含登录密钥,另一个ParseStarterProjectActivity包含上面的代码。您的评论让我相信我应该有一个ParseService类? - user3078406
2个回答

0
原来代码实现是正确的。但由于某种原因,原始项目抛出了错误异常。我将代码迁移到了一个新项目中,现在它可以正常工作了。感谢所有花时间回答我的问题的人。

0
我在使用 Retrofit 从 API 获取 JSON 并将其传递到 Recycler 视图时遇到了问题。显然,我使用了 GSON 转换器,但我的 POJO 类没有注释,所以我添加了注释,清理并重新构建了项目,卸载了手机/模拟器上的旧设置,再次运行后问题消失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接