0

嘿,我不知道这是否是正确的方法,但如果是我该怎么做......

我有一个带有 AsyncTask 的抽象类

public abstract class A{
  A(){
    new Task().execute();
  }

  public abstract void postAction();

  private class Task extends AsyncTask<String, String, String>{
    protected String doInBackground(String... args)
    {
      //smth
    }

    protected void onPostExecute(String file_url){
       postAction();
    }
  }
}

之后,我有一个扩展 A 类并覆盖它的postAction()方法的类:

public class B extends A{
   B(){
      //smth
   }

   postAction(){
     //some action
   }
}

在我的活动中,我有实例B并且我想在调用 postAction 时执行操作......所以如果可能的话我想要函数监听器,我该怎么做

class C extends Activity{
   public void onCreate(Bundle savedInstance) {
      super.onCreate(savedInstance);
      //somethingggg happeiningggg
   }

   MyListener listener = new MyListener(){
       onPostActionCalled()
       {
         //start another activity or smt :D
       }
   };
}

所以我有 json response( class A) 的类,class B它扩展了它并覆盖了它的 post 方法,所以我可以针对特定情况做我想做的事情(期望不同的数据或其他 nvm)

在我的活动中,我想在class B调用 post 方法时执行操作

我根本不知道我是否需要做监听器或处理程序 idk....

4

1 回答 1

0

Stefan 是对的,为什么要把事情复杂化?

看这个真正简单的线程示例:

public class MyActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     

    new MyTask(new TaskListener() {

        @Override
        public void finished(boolean result) {
            // back on main thread after task finishes

        }
    }).execute();
}

private interface TaskListener{
    void finished(boolean result);      
}

private class MyTask extends AsyncTask<Object, Integer, Boolean>{

    private TaskListener mListener; 


    public MyTask(TaskListener mListener) {
        super();
        this.mListener = mListener;
    }

    @Override
    protected Boolean doInBackground(Object... params) {
        // long running background operation
        return true;
    }

    @Override
    protected void onPostExecute(Boolean result) {
        mListener.finished(result);
        super.onPostExecute(result);
    }       
}

}

于 2013-05-21T09:17:56.820 回答