Android-onOptions ItemSelected UI冻结,直到完成
这个问题描述起来很简单,但我没有找到答案 我正在使用ActionBarSherlock(如果相关的话),我有一个菜单选项来刷新片段的内容。一切都很好 我遇到的问题是,当我按下刷新按钮时,它将冻结UI,直到进程完成,我想显示对话框和其他内容 下面是一段代码: “公共类MainActivity扩展SherlockFragmentActivity”方法: 在这种情况下,UI冻结10秒(刷新按钮保持为“已选择”) 我不认为这与我的应用程序代码有关,而是与ABS或安卓系统有关 事实是:我在这个方法中使用线程和异步任务,所以这不是问题所在Android-onOptions ItemSelected UI冻结,直到完成,android,user-interface,actionbarsherlock,Android,User Interface,Actionbarsherlock,这个问题描述起来很简单,但我没有找到答案 我正在使用ActionBarSherlock(如果相关的话),我有一个菜单选项来刷新片段的内容。一切都很好 我遇到的问题是,当我按下刷新按钮时,它将冻结UI,直到进程完成,我想显示对话框和其他内容 下面是一段代码: “公共类MainActivity扩展SherlockFragmentActivity”方法: 在这种情况下,UI冻结10秒(刷新按钮保持为“已选择”) 我不认为这与我的应用程序代码有关,而是与ABS或安卓系统有关 事实是:我在这个方法中使用线
关于如何使UI可更新(或像线程一样运行此方法)的任何想法?您正在调用
Thread.sleep(10000)在UI
线程上执行code>,使其冻结。你不应该这样做
事实是:我在这个方法中使用线程和异步任务,所以这不是问题所在
我不知道你所说的“这不是问题”是什么意思,但你可以将线程。sleep(…)
移动到你的线程之一
或异步任务
关于如何使UI可更新(或者像线程一样运行此方法)有何想法
您说在这个方法中使用的是AsyncTask
。在代码运行后(或者除了doInBackground()
之外,在onPostExecute()
异步任务中更新UI
)中的。
确定…我使用了一个线程(里面有一个异步任务),认为不会麻烦。我已将其更改为异步任务,现在可以工作了。谢谢!AsyncTask
是一个后台线程
,因此无需这样做。很高兴它能为您工作。
@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;
}