Java 与程序中的控制流混淆
我在android应用程序中使用Parse数据库。我对我的程序Java 与程序中的控制流混淆,java,android,parse-platform,Java,Android,Parse Platform,我在android应用程序中使用Parse数据库。我对我的程序connectdatabase.java中控件的流动方式感到困惑。代码如下: public class ConnectDatabase extends Activity { public static int LOGIN_STATUS; public static void main(String[] args) { // TODO Auto-generated method stub }
connectdatabase.java
中控件的流动方式感到困惑。代码如下:
public class ConnectDatabase extends Activity {
public static int LOGIN_STATUS;
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public static boolean authenticate(Context c, String email, String password) {
Log.d("Message", email+" & "+password);
Parse.initialize(c, "IFm3T3f7445F8fRILTcO", "HTwH2gycHQMS7LpyAf43mud");
ParseUser.logInInBackground(email, password, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException e) {
// TODO Auto-generated method stub
Log.d("Inside done", "Msg: " + e);
if (user != null) {
LOGIN_STATUS = 1;
Log.d("LOGIN_STATUS value", Integer.toString(LOGIN_STATUS));
}
else {
LOGIN_STATUS = 0;
}
}
});
Log.d("After done(..)" , Integer.toString(LOGIN_STATUS));
if(LOGIN_STATUS == 1) return true;
else return false;
}
}
我的LoginActivity.java
代码是:
public void login(View v) {
AutoCompleteTextView emailInput = (AutoCompleteTextView) findViewById(R.id.email);
EditText passwordInput = (EditText) findViewById(R.id.password);
String email = emailInput.getText().toString();
String password = passwordInput.getText().toString();
if(ConnectDatabase.authenticate(this, email, password) == true) {
Toast toast = Toast.makeText(getApplicationContext(), "Login Successful", Toast.LENGTH_LONG);
toast.show();
}
else {
Toast toast = Toast.makeText(getApplicationContext(), "Login Unsuccessful", Toast.LENGTH_LONG);
toast.show();
}
}
在logcat窗口中,它首先显示“Message”标记,然后显示“After done(..)”,然后显示“Inside done”,然后显示“LOGIN_STATUS value”=1您要求在后台完成一项任务,因此当该任务在后台完成时,您的程序将继续执行其余任务。您可能需要某种侦听器或回调方法,当您的任务完成时可以调用这些方法来执行其他任务,如果您需要依赖于在执行某段代码之前所做的事情。我在parse API的文档中找到了解决方案。这是我最后的
ConnectDatabase.java
:
public static boolean authenticate(Context c, String email, String password) throws ParseException {
Log.d("Message", email+" & "+password);
Parse.initialize(c, "IFmI83T3f7445F8fRILTcO", "HTwH2gycHQMSDvLpyAf43mud");
ParseUser.logIn(email, password);
return true;
}
在
LoginActivity.java
中,我捕获了ParseException,如果找不到用户或出现网络错误,将抛出该异常 好的。在我的例子中,我正在活动中调用authenticate(..)方法,所以它显然期望从同一个方法返回值。done()方法不允许我返回任何东西,那么我如何实现它呢?您需要了解什么是异步方法