所以我对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中的东西,这可能吗?
答案 0 :(得分:0)
从其他活动回来时,您是否希望UpdateSpinnerTask
再次运行?好吧,您应该将UpdateSpinnerTask
来电代码从onCreate()
移至onResume()
。由于每次进入您的活动时都不会调用onCreate()
。您应该了解有关Activity's lifecycle的更多信息。
答案 1 :(得分:0)
这不是关于在AsyncTask
中运行onCreate()
两次。这是关于在2个活动生命周期中产生2个单独的后台线程(重用同一个AsyncTask对象没有多大意义)。
如果您第二次拨打execute()
时遇到问题,请尝试executeOnExecutor()
(请注意,您只能为API 11及更高版本执行此操作)
另外,如果你能澄清你的问题(见我的评论),也许我可以给出更好的答案