gpt4 book ai didi

Android - 在线程之间传递数据

转载 作者:太空狗 更新时间:2023-10-29 13:21:14 24 4
gpt4 key购买 nike

我需要在线程之间传递大量数据(原始字节)——监听器线程和另一个处理数据操作的线程。最好最快的方法是什么?

最佳答案

正如其他人所指出的,这实际上取决于您的任务。我建议使用 Message .例如,如果您的一个线程是所述 byte[] 数据的生产者,而另一个是消费者,您可能有这样的东西:

public class ProducerThread extends Thread{
byte[] data;

public void run(){
while (isRunning){
Looper.prepare();
data = someMethodToGetYourByteData();
Message dataToSend = Message.obtain();
Bundle bundle = new Bundle();
bundle.putByteArray("data", data);
dataToSend.setData(bundle);
if (ConsumerThread.mHandler!=null){
ConsumerThread.mHandler.sendMessage(dataToSend);
}
Looper.loop();
}
}

和您的消费者线程:

public class ConsumerThread extends Thread{
public static Handler mHandler;
byte[] data;

public void run(){
while (running){
Looper.prepare();
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mHandler.obtainMessage();
data = msg.getData().getFloatArray("data");
doSomethingWithData(data);
};
}
Looper.loop();
}

请记住,尽管这可能不是最好的模式,因为 SO 上的许多其他地方都指出扩展线程不是最好的主意,但这通常取决于用例。

关于Android - 在线程之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com