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

标签 java android multithreading

我想制作下载器,它下载数据然后在 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?

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

关于java - Android - 在主线程中运行响应调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735647/

相关文章:

java - 查询返回与 NamedQuery 不匹配

android - 移动设备上的图像处理速度

android - Google Cast 接收器 sdk 集成

c++ - 这种优化有名称吗?

C# 存储信息

java - MultiDex 停止运行 Android

java - 在测试类的其他方法中使用对象

java - 比较 Double.MIN_VALUE 和 0

Android Studio 显示对话框 "unable to create debug bridge : unable to start adb server: unable to obtain result of ' adb version'"

java - Schedulers.newElastic 和 Schedulers.elastic 方法有什么区别?