5

我有一个TabActivity有四个选项卡(每个都是它自己的活动)。每个选项卡都定义了自己的onCreateOptionsMenu(在某些情况下,onPrepareOptionsMenu)。加载每个选项卡时,将AsyncTask启动 an 以检索填充该选项卡列表所需的数据。

如果我非常快速地在选项卡之间切换(当它们仍在加载时)然后按下菜单按钮(当当前选项卡AsyncApiTask仍在运行时),我会出现错误的选项菜单。

例如,假设FooActivity(选项卡 1)有一个带有“刷新”项的选项菜单,而BarActivity(选项卡 2)有一个带有“查看全部”项的选项菜单。如果我启动应用程序(选项卡 1 处于活动状态),快速切换到选项卡 2,然后点击菜单,有时会显示“刷新”项(而不是预期的“查看全部”项)。

此外,虽然这种奇怪的行为有时只发生在第一次按下菜单时(后来按下显示正确的项目),但有时它会“卡住”,并且每次按下都会出现错误的项目,直到我切换标签。

知道会发生什么吗?我以前没有听说过这种情况,也找不到任何好的建议。

4

1 回答 1

0

是的,CommonsWare 建议是一个更好的解决方案!您甚至可以考虑为每个选项卡使用FragmentTabHost和片段。这样,主机活动可以从 集中更新选项菜单onTabChanged(String tab)

虽然 anAsyncTask是从 an 生成的Activity,但如果它还没有运行onPostExecute(...),它仍然会运行。此外,由于 s 的默认行为是可变的(不同版本的 android 顺序/并行运行它们),没有您自己的ThreadPoolExecutorAsyncTask很难控制。您的快速切换和重复的 s 似乎阻塞了。ActivityAsyncTask

于 2013-09-17T20:16:53.447 回答