我想制作下载器,下载数据然后在UI线程中调用函数。我在主要活动中有这个
onCreate(){
...
dataRepository.downloadIfNewOrEmpty(new DownloadResponse() {
@Override
public void SuccessResponse(Response response) {
// do something in UI
}
});
}
我的函数downloadIfNewOrEmpty
现在只用sleep()
public void downloadIfNewOrEmpty(final DownloadResponse response){
//final Handler handler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
response.SuccessResponse(ResponseCode.SUCCESS);
/*handler.post(new Runnable() {
@Override
public void run() {
response.SuccessResponse(ResponseCode.SUCCESS);
}
});*/
}catch (Exception e){
// Log...
}
}
}).start();
}
如果我运行此代码,它通常会完成工作并更新我的UI。我用Handler(android.os.Handler)找到了这个解决方案但是如果我在没有Handler(注释版本)的情况下运行它,它的工作方式是一样的。
虽然没有处理函数SuccessResponse
在UI线程中运行?
谢谢
答案 0 :(得分:1)
虽然没有处理函数SuccessResponse在UI线程中运行?
是的,因为response
是DownloadResponse
的实例,它从UI Thread作为参数传递给downloadIfNewOrEmpty
。