我在Android应用程序中使用了Parse,我的代码如下所示:
public class SignupActivity extends Activity {
//Collect signup data
User.signupInBackground(data);
}
public class User{
//User methods, constructors, etc
public static void signup(data){
ParseUser pUser = new ParseUser();
//Build data into pUser
pUser.signUpInBackground(new SignUpCallback() {
public void done(ParseException e){
if (e!=null){
Log.v("Signup",e.toString());
}
}
});
所以问题是,signUpInBackground流程完成后如何通知我的活动?我不能让SignupActivity实现SignUpCallback,因为它是一个抽象类,我必须扩展Activity。
最终,我想要做的是显示一个对话框或等待的动画,然后在完成后台线程后将其删除。或者,后台线程可以启动活动。问题在于User类和匿名内部类没有自己的Context,因此它们无法启动活动。
我在这方面还很陌生,所以谢谢您的帮助。
最佳答案
根据您当前的代码结构,几种方法可能会起作用。
在Handler
中创建一个SignupActivity
并将其传递给User
,以便它具有与活动进行交互的方式。
使SignUpCallback
成为接口而不是抽象类。
在SignUpCallback
类中创建SignupActivity
的concreate子类的实例;它可以访问SignupActivity
的方法。
我假设signUpInBackground
在工作线程上执行,并且回调是从该线程调用的。如果正确,那么在所有情况下,您都需要通过SignupActivity
与Handler
进行交互。因此,我建议使用方法1,除非其他方法允许使用更干净的代码。