繁体   English   中英

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

[英]AsyncTask in Android onCreate method needs to run twice and update accordingly

因此,我对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中的内容,这可能吗?

您是否希望从另一个Activity返回时再次运行UpdateSpinnerTask 好吧,您应该将UpdateSpinnerTask调用代码从onCreate()移到onResume() 因为在进入Activity时不会每次都调用onCreate() 您应该对Activity的生命周期了解更多。

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

如果您在第二次调用execute()遇到麻烦,请尝试执行executeOnExecutor() (请注意,您只能对API 11及更高版本执行此操作)

另外,如果您可以澄清问题(请参阅我的评论),也许我可以给出更好的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM