Android onCreate方法中的AsyncTask需要运行两次并相应地更新

时间:2014-03-12 02:06:02

标签: java android android-asynctask oncreate

所以我对AsyncTasks的工作方式不是很了解,所以这可能就是我当前代码无效的原因。如果我在onCreate方法中运行了AsyncTask:

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new UpdateSpinnerTask().execute(MainActivity.DUMMY_URI);
  }

然后它正常运行。然后,如果我单击一个按钮转到另一个活动(ListView),基本上我一直在做的是重新启动MainActivity,以便重新创建我的视图。现在,微调器任务随后无法正常工作。就像它不会在后执行中做它应该做的那样。

通常看起来像:

    private class UpdateSpinnerTask extends AsyncTask<String, Void, List<String>> {
    @Override
    protected List<String> doInBackground(String... url) {
            }
    }

所以我的问题是如果我想在我的onCreate中多次运行AsyncTask中的东西,这可能吗?

2 个答案:

答案 0 :(得分:0)

从其他活动回来时,您是否希望UpdateSpinnerTask再次运行?好吧,您应该将UpdateSpinnerTask来电代码从onCreate()移至onResume()。由于每次进入您的活动时都不会调用onCreate()。您应该了解有关Activity's lifecycle的更多信息。

答案 1 :(得分:0)

这不是关于在AsyncTask中运行onCreate()两次。这是关于在2个活动生命周期中产生2个单独的后台线程(重用同一个AsyncTask对象没有多大意义)。

如果您第二次拨打execute()时遇到问题,请尝试executeOnExecutor()(请注意,您只能为API 11及更高版本执行此操作)

另外,如果你能澄清你的问题(见我的评论),也许我可以给出更好的答案