1

这个问题描述起来很简单,但是我没有找到答案。

我正在使用 ActionBarSherlock(如果相关),并且我有一个菜单选项来刷新片段的内容。一切正常。

我遇到的问题是,当我按下刷新按钮时,它会冻结 UI 直到进程完成,我想显示对话框和其他内容。

这是一段代码:

“公共类 MainActivity 扩展 SherlockFragmentActivity”方法:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case R.id.action_refresh:
        Thread.sleep(10000); // removed try/catch code for practical purposes.
      break;
    }
    return true;
}

在这种情况下,UI 冻结 10 秒(刷新按钮保持“选中”状态)。

我认为这与我的应用程序代码无关,而是与 ABS 或 android 事物有关。

只是一个事实:我在这个方法中使用线程和异步任务,所以这不是问题。

关于如何使 UI 可更新(或像线程一样运行此方法)的任何想法?

4

1 回答 1

2

您正在调用线程Thread.sleep(10000);UI因此它将冻结。你不应该这样做。

只是一个事实:我在这个方法中使用线程和异步任务,所以这不是问题。

我不确定您所说的“那不是问题”是什么意思,但是您可以转到Thread.sleep(...)您的ThreadsAsyncTask您拥有的一个

关于如何使 UI 可更新(或像线程一样运行此方法)的任何想法?

你说你用AsyncTask的是这个方法。UI在您onPostExecute()的代码运行后AsyncTask更新您的doInBackground()

于 2013-06-24T14:36:56.700 回答