Android - 在主线程中运行响应调用

时间:2015-11-16 12:40:45

标签: java android multithreading

我想制作下载器,下载数据然后在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线程中运行?

谢谢

1 个答案:

答案 0 :(得分:1)

  

虽然没有处理函数SuccessResponse在UI线程中运行?

是的,因为responseDownloadResponse的实例,它从UI Thread作为参数传递给downloadIfNewOrEmpty