在我的应用程序中,我希望用户能够注册自己.如果他们之前的另一个用户已经使用了该特定的电子邮件地址或用户名,则该应用应该这样说,而不是让他们将数据上传到服务器.
现在我的问题是,主线程不会等待检查用户名或电子邮件是否已存在的两个后台任务,而是继续运行,以便将每个用户对象发送到服务器,即使它们已经存在.
这是我检查用户名和电子邮件的代码:
public void checkEmailadress(String s){
ParseQuery<ParseObject> query = ParseQuery.getQuery("userLogin");
query.whereEqualTo("emailadress",s);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> arg0, ParseException e) {
// TODO Auto-generated method stub
Iterator itr = arg0.iterator();
if(itr.hasNext()){
emailadressInUse = true;
}else{
emailadressInUse = false;
}
System.out.println(emailadressInUse);
finishSubmittingUser();
}
});
}
Run Code Online (Sandbox Code Playgroud)
同样可以检查用户名.这很好用.问题是,boolean emailadressInUse的更改速度不足以让主线程更改动作.
这是启动这两种方法的方法
public void submitNewUser(View view){
EditText edittext1 = (EditText) findViewById(R.id.chose_username);
EditText edittext2 = (EditText) findViewById(R.id.chose_realname);
EditText edittext3 = (EditText) findViewById(R.id.chose_emailadress);
EditText edittext4 = (EditText) findViewById(R.id.chose_password);
username = edittext1.getText().toString();
realname = edittext2.getText().toString();
emailadress …Run Code Online (Sandbox Code Playgroud)