后台线程完成后返回Android活动

时间:2013-06-20 02:48:47

标签: java android multithreading parsing user-interface

我正在使用Parse和我的Android应用程序,我的代码看起来像这样:

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,所以它们无法启动活动。

我对此很新,所以感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

根据您当前的代码结构,有几种方法可能会有效。

  1. Handler中创建SignupActivity并将其传递给User,以便与活动进行互动。
  2. 使SignUpCallback成为一个接口,而不是一个抽象类。
  3. SignUpCallback类中创建SignupActivity的concreate子类的实例;它可以访问SignupActivity
  4. 的方法

    我假设signUpInBackground正在工作线程上执行,并且从该线程调用回调。如果这是正确的,那么在所有情况下,您都需要通过SignupActivityHandler进行互动。因此,我建议方法#1,除非其他方法允许更清晰的代码。