作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有需要将异步任务作为内部方法运行的对象(不在 ui 线程上),我想将 ui 线程传递给该方法,然后以这种方式在 asynctask 上实现 ui 线程 - 有没有办法这样做吗?
伪代码:
public class EditDetails extends Activity{
MyObject obj = new obj;
obj.syncWithServer(EditDetails.this);
}
public class MyObject {
public void syncWithWerver(EditDetails parent){
final class GetUserHttpTask extends AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {
@Override
protected String doInBackground(String... params) {
return "";
}
@Override
protected String onPostExecute(String result) {
//this doesn't run
}
}
}
}
注意:目前这不起作用,因为 onPostExecute 不会在 doInBackground 之后触发
编辑
此代码是伪代码,实际问题仍在发生,我已将其列出 http://pastebin.com/jW6JpUbg here ..基本上它在pastebin上运行第72行后就卡住了,永远不会onPostExecute
最佳答案
够奇怪的onPostExecute
应该是void
。我想知道当您更改了重写方法的返回类型时,您的代码编译情况如何?
更正 onPostExecute
后,您可以按如下方式运行 AsyncTask
:
final class GetUserHttpTask extends AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {
@Override
protected String doInBackground(String... params) {
return "";
}
@Override
protected String onPostExecute(String result) {
// this will run
}
}
public void syncWithWerver(EditDetails parent){
AsyncTask task = new GetUserHttpTask();
task.execute();
}
关于java - 确保异步线程在 ui 线程上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146055/
我是一名优秀的程序员,十分优秀!