2017-03-01 56 views
0

我想获得a的值并将其设置为b,我该怎么做?
public class MainActivity extends AppCompatActivity int a,b;如何从MainActivity中使用asynctask的结果中获取值

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Task task=new Task(); 
    task.execute(5,6); 
    b=a; 
} 

public class Task extends AsyncTask<Integer,Void,Integer>{ 

    @Override 
    protected void onPostExecute(Integer integer) { 
     super.onPostExecute(integer); 
     a=integer; 

    } 

    @Override 
    protected Integer doInBackground(Integer... integers) { 
     return integers[0]+integers[1]; 
    } 
} 
} 

回答

1

在管线b=a;准时运行运行的其他线程

最好的结果是在方法onPostExecute写入B = A;

so b before than a be set

0

在你的问题你已经有了答案。 执行此语句后。

Task task=new Task(); 
task.execute(5,6); 

执行task.execute第一doInBackground将被调用,然后将返回到onPostExecute然后A和B,您将可以分配的金额为后。 只需在onPostExecute中写b=a,它将按照您的需要工作。

+0

感谢您的回答,但在这种情况下,我需要在MainActivity中使用b。 –

+0

你能解释一下你的场景吗?因为显然Asyntask需要一些时间,这就是为什么我们要使用AsynTask,但是仍然需要在创建之后创建新线程并指定一些时间来执行,但它不会覆盖你的解决方案。 –

+0

我已经通过在Sharedpreference上保存“a”来解决我的问题,然后回到MainActiviity并分配给“b”,我得到我想要的结果。谢谢你的帮助!\ –

相关问题