首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android:从匿名类向线程返回值的正确方法是什么?

Android中,从匿名类向线程返回值的正确方法是使用回调函数或者使用Handler机制。

  1. 使用回调函数:定义一个接口,接口中定义一个方法用于返回结果。在匿名类中调用该方法,并将结果作为参数传递给该方法。在调用匿名类的地方,实现接口并重写方法,即可获取返回的结果。

示例代码如下:

代码语言:java
复制
public interface Callback {
    void onResult(String result);
}

public class MyThread extends Thread {
    private Callback callback;

    public MyThread(Callback callback) {
        this.callback = callback;
    }

    @Override
    public void run() {
        // 执行耗时操作
        String result = "Hello World";
        callback.onResult(result);
    }
}

// 在调用处
MyThread myThread = new MyThread(new Callback() {
    @Override
    public void onResult(String result) {
        // 处理返回结果
        Log.d(TAG, "Result: " + result);
    }
});
myThread.start();
  1. 使用Handler机制:在主线程中创建一个Handler对象,并重写其handleMessage()方法,用于处理子线程返回的消息。在匿名类中通过Handler对象发送消息,并在handleMessage()方法中处理返回的结果。

示例代码如下:

代码语言:java
复制
public class MyThread extends Thread {
    private Handler handler;

    public MyThread(Handler handler) {
        this.handler = handler;
    }

    @Override
    public void run() {
        // 执行耗时操作
        String result = "Hello World";
        Message message = handler.obtainMessage();
        message.obj = result;
        handler.sendMessage(message);
    }
}

// 在主线程中
Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        String result = (String) msg.obj;
        // 处理返回结果
        Log.d(TAG, "Result: " + result);
    }
};

MyThread myThread = new MyThread(handler);
myThread.start();

以上两种方法都可以实现从匿名类向线程返回值的功能,具体选择哪种方法取决于具体的需求和场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

7分1秒

第二十章:类的加载过程详解/71-类初始化方法clinit()的线程安全性

8分19秒

day19_多线程/10-尚硅谷-Java语言高级-同步方法处理继承Thread类的线程安全问题

领券