我在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在工作线程上执行,并且回调是从该线程调用的。如果正确,那么在所有情况下,您都需要通过SignupActivityHandler进行交互。因此,我建议使用方法1,除非其他方法允许使用更干净的代码。

08-03 13:31