Java AsyncTask-如何将对象作为参数传递给匿名AsyncTask类

Java AsyncTask-如何将对象作为参数传递给匿名AsyncTask类,java,android,android-asynctask,Java,Android,Android Asynctask,我正在用android做一些编码工作。我几乎遇到了一个问题,为了解决这个问题,我需要一个匿名异步任务类来执行。但在执行之前,我还需要向这个类传递和对象。我尝试了下面的代码,但它不起作用,我也没有通过谷歌搜索找到任何解决方案 public void saveCartToRoom(CartsPay cartsPay){ new AsyncTask<Void,Void,Void>(){ CartsPay cartsPay; @Override

我正在用android做一些编码工作。我几乎遇到了一个问题,为了解决这个问题,我需要一个匿名异步任务类来执行。但在执行之前,我还需要向这个类传递和对象。我尝试了下面的代码,但它不起作用,我也没有通过谷歌搜索找到任何解决方案

 public void saveCartToRoom(CartsPay cartsPay){

    new AsyncTask<Void,Void,Void>(){

        CartsPay cartsPay;
        @Override
        protected Void doInBackground(Void... voids) {
            return null;
        }

        public void setRQ(CartsPay cartsPay){
            this.cartsPay= cartsPay;
        }

    }.setRQ(cartsPay).execute();

}
public void saveCartToRoom(CartsPay CartsPay){
新建异步任务(){
CartsPay CartsPay;
@凌驾
受保护的空位背景(空位…空位){
返回null;
}
公共无效设置(CartsPay CartsPay){
this.cartsPay=cartsPay;
}
}.setRQ(cartsPay).execute();
}

以下是如何将
CartsPay
参数传递给匿名
AsyncTask

new AsyncTask<CartsPay,Void,Void>(){

        CartsPay cartsPay;

        @Override
        protected Void doInBackground(CartsPay... params) {

            this.cartsPay = params[0];

            // Your code ...

            return null;
        }

        public AsyncTask setRQ(CartsPay cartsPay){
            this.cartsPay= cartsPay;
            return this;
        }

    }.execute(cartsPay);
newasynctask(){
CartsPay CartsPay;
@凌驾
受保护的空doInBackground(CartsPay…参数){
this.cartsPay=params[0];
//你的代码。。。
返回null;
}
公共异步任务集(CartsPay CartsPay){
this.cartsPay=cartsPay;
归还这个;
}
}.执行(cartsPay);

您可以这样做:

 class CustomAsyncTask extends AsyncTask<Void, Void, Void> {
    private YourParam mParam;

    public CustomAsyncTask(YourParam param) {
       mParam = param;
    } 

    @Override
    protected doInBackground(Void.. voids){
      //do your thing.
    }
}

为什么您要求匿名?通常您希望使用构造函数添加属性并提供值。我需要做一些不会中断我正在运行的UI线程的后台工作。如何使用匿名类实现这一点,我指的是构造函数工作?您不能在匿名类上使用构造函数:“但是,您不能在匿名类中声明构造函数。”来自。因此,您是否希望避免一些额外的行(您可以使用doInBackground参数)或者是否希望遵循约定并创建普通类取决于您
new CustomAsyncTask(param).execute();