我想制作下载器,它下载数据然后在 UI 线程中调用函数。我在主要 Activity 中有这个
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();
}
如果我运行这段代码,它通常会完成工作并更新我的用户界面。我用 Handler (android.os.Handler) 找到了这个解决方案,但如果我在没有或有 Handler(注释版本)的情况下运行它,它的工作原理是一样的。
虽然没有处理函数 SuccessResponse
是在 UI 线程中运行?
谢谢
最佳答案
Although without handler function SuccessResponse is run in UI thread?
是的,因为 response
是 DownloadResponse
的实例,它作为参数从 UI 线程传递给 downloadIfNewOrEmpty
。
关于java - Android - 在主线程中运行响应调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735647/