Android - onOptionsItemSelected UI 卡住直到完成

标签 android user-interface actionbarsherlock

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

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

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

这是一段代码:

“公共(public)类 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 可更新(或者像线程一样运行此方法)有什么想法吗?

最佳答案

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

Just a fact: I use threads and asynctasks inside this method, so that's not the problem.

我不确定你所说的“那不是问题”是什么意思,但你可以将 Thread.sleep(...) 移动到你的 Threads 之一或AsyncTask 你有

Any thoughts on how to make UI updateable (or run this method like if a Thread)?

你说你在这个方法中使用了AsyncTask。在代码运行后更新 onPostExecute() 中的 UI(或者除了 doInBackground() 之外您希望在 AsyncTask 中使用的任何其他方法

关于Android - onOptionsItemSelected UI 卡住直到完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17278032/

相关文章:

android - 自定义支持对话框 fragment 文本颜色错误

android - 覆盖 Android 库项目资源文件

java - 计算器项目问题

android - 如何读写移动设备上的安全元件以实现 NFC 支付目的?

python - QThread 到 QProcesses 的信号/槽

python - 如何将 QImage 插入到 PyQt4 中的 NxN 网格布局中?

android - SherlockFragment 的 Activity

android - 设置Android ActionBar的渐变

Android Facebook Activity 邀请

安卓 ListFragment : how to have both onListItemClick and onContextItemSelected?