Android怎么实现把子线程接收到的实时数据传送给UI界面并用textview显示 40C

Android蓝牙模块接受到的输入流要显示在程序中另一个Activit中,并且实时更新数据,哪位大神help一下啊

12个回答

在Android中规定只有UI thread可以更新界面,但是我们开发中会经常遇到一些耗时的操作,这些操作可能会很花费时间,最终的结果却要更新到UI上
这种情况下,如果我们将这个操作放到UI thread中做就很可等挡住UI线程,从而导致ANR Application Not Responding,因此我们都会new一个工作
线程,在这个线程中做复杂的耗时操作,待得到结果后,再将结果更新到UI。
子线程获取数据,更新UI的方法大概有这样几种:
1、通过AsyncTask+progressbar的方法,在AsyncTask的doInBackground()中做耗时的操作,在onProgressUpdate(Progress…) 中更新UI(进度条)
此方法在主线程执行,用于显示任务执行的进度。onPostExecute(Result) 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回。
2、通过Handler的方法,从子线程中发消息Msg,在Handler中处理该消息(在UI thread中执行),并updateUI。
3、如果你的界面是listView的形式,不妨用listAdapter绑定数据库,在子线程接收到实时数据跟新到provider中,然后触发listView的自动更新。

whatmake
whatmake 回复fanhengbiao: 使用EventBus还需要导入相应的资源包吗?
接近 5 年之前 回复
fanhengbiao
fanhengbiao eventbus可以实时更新
接近 5 年之前 回复
whatmake
whatmake 我这里是接受的输入流是在一个Activity中的子线程中,我要把它传到另一个Activity中显示,这里还能用Handler?
接近 5 年之前 回复

用handler处理一下就行了。

whatmake
whatmake handler可以跨Activity使用吗?在一个程序里是不是不同的UI界面都是拥有自己的主线程?
接近 5 年之前 回复

每个界面都有自己的UI线程

whatmake
whatmake 回复Jack-sen: 我弄了好多次都不行。。。
接近 5 年之前 回复
crazy1235
月盡天明 必须的啊
接近 5 年之前 回复
whatmake
whatmake 我在一个主线程中的子线程通过handler能被另一个UI线程接收到?
接近 5 年之前 回复

在子线程中使用Handler发送消息,在HanDler中处理UI的更新

whatmake
whatmake 不懂
接近 5 年之前 回复
whatmake
whatmake 不懂
接近 5 年之前 回复

你的问题主有有两个:
1、子线程去UI操作怎么做:
这点上面都有回答了,总之就一个诀窍,一定要放在主线程操作UI就行,可用Handler,view.post(),AsyncTask等等都可以;

2、不同Activity之间如何消息传递:
这个,我建议你了解一些监听器的实现原理,或者看看监听者模式,你在ActivityA去监听ActivityB即可,主要是回调。EventBus的实现原理也是如此的,如果你自己不想写,就用EventBus这个框架,不过我建议你还是自己写

whatmake
whatmake 回调函数看的云里雾里的。。。
接近 5 年之前 回复

你可以看看这个例子

package com.example.mrwang.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import java.util.Timer;
import java.util.TimerTask;
/**

  • Created by MrWang on 2015/8/8.
    */
    public class Start extends Activity{

    ProgressBar pgBar;
    TextView tvShow;
    Button btnStart;
    int progress=0;
    Timer timer;
    Handler handler;
    TimerTask timerTask;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start);

    pgBar=(ProgressBar)findViewById(R.id.pg);
    tvShow=(TextView)findViewById(R.id.tvShow);
    btnStart=(Button)findViewById(R.id.btStart);
    timer=new Timer();
    handler =new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case 0x001:
                    pgBar.setVisibility(View.VISIBLE);
                    pgBar.setProgress(progress);
                    tvShow.setVisibility(View.VISIBLE);
                    break;
                case 0x002:
                    pgBar.setVisibility(View.INVISIBLE);
                    tvShow.setText("加载完成");
                    timerTask.cancel();
                    timer.cancel();
                    break;
            }
        }
    };
    timerTask =new TimerTask() {
        @Override
        public void run() {
            if(progress<100){
                progress++;
                handler.sendEmptyMessage(0x001);
            }else{
                handler.sendEmptyMessage(0x002);
            }
        }
    };
    
    pgBar.setVisibility(View.INVISIBLE);
    tvShow.setVisibility(View.INVISIBLE);
    
    btnStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    
            timer.schedule(timerTask,//你要完成的工作
                    0,//延迟时间
                    100//每隔多长时间触发一次
            );
            btnStart.setEnabled(false);
        }
    });
    

    }
    }

最简单的方法是使用handler,在类里定义一个handler变量,例如:Hanler handler=new Hanler(){
public void HanleMessage(Message msg){// 函数名不能变
switch(msg.what){//msg.what一般传递线程里需要界面操作执行的操作
Bundle bundle=new Bundler();
bunle=msg.getData();从传过来的message数据中取出传过来的绑定数据的bundle对象
String str=bundle.getString("string");//从bundle中取出数据
text.setText(str);//具体操作
}
}
};

在接收线程里使用handle变量(该例子是把数据text传递到可以操作布局的handler里)
String text="text";
Message message=new Message();
Bundle bunle=new Bundle();
bundle.putString(text);
message.setData(bundle);
handler.sendMessage(message);

这样就可以把线程里的string数据传递到handler里了,handler就可以进行布局的操作

最简单的方法是使用handler,在类里定义一个handler变量,例如:Hanler handler=new Hanler(){
public void HanleMessage(Message msg){// 函数名不能变
switch(msg.what){//msg.what一般传递线程里需要界面操作执行的操作
Bundle bundle=new Bundler();
bunle=msg.getData();从传过来的message数据中取出传过来的绑定数据的bundle对象
String str=bundle.getString("string");//从bundle中取出数据
text.setText(str);//具体操作
}
}
};

在接收线程里使用handle变量(该例子是把数据text传递到可以操作布局的handler里)
String text="text";
Message message=new Message();
Bundle bunle=new Bundle();
bundle.putString(text);
message.setData(bundle);
handler.sendMessage(message);

这样就可以把线程里的string数据传递到handler里了,handler就可以进行布局的操作

呃。。。最简单的方式就是使用回调函数。。。当获取得到相应的数据再调用相应的方法执行相应的功能就行了吧

u011596810
「已注销」 http://blog.csdn.net/lindir/article/details/7819720以看看这篇博客的最后那段代码来实现函数回调
接近 5 年之前 回复

1.同一个Activity中可以使用hanlder发送消息进行界面更新
2.不同Activity中可以使用LocalBroadcastManager来发本地广播

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

android子线程更新UI的问题

```java public class ThreadReuseAct extends Activity { TextView tv; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act_threadreuse); tv = findViewById(R.id.threadreuse_tv); new Thread(new Runnable() { @Override public void run() { tv.setText("setText in sub thread\n");//此处并不会导致异常,请问是什么原因? } }).start(); } } ```

关于android子线程操作UI的问题

看到的所有的资料上都说android的子线程不能操作UI,抱着好奇心我写了下面的程序,竟然运行成功了,不知谁能解释一下这个问题 public class MainActivity extends Activity { Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); new Thread(new Runnable() { public void run() { bt.setText("haha"); } }).start(); } }

主线程 传递给子线程一个数据

``` public class MainActivity extends AppCompatActivity implements BatteryReceiver.BatteryBRInterface { private int BatteryPower = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); BatteryReceiver batteryReceiver = new BatteryReceiver(); registerReceiver(batteryReceiver, intentFilter); batteryReceiver.setBatteryBRInterfaceListener((BatteryReceiver.BatteryBRInterface) this); } @Override public void getPower(int power) { if (power!=0){ BatteryPower = power; String s = Integer.toString(BatteryPower); Log.e("zzz", s); //发起连接线程 new ClientConn().start(); } } } ``` 我需要BatteryPower这个值传递出给子线程,让子线程去做数据的发送。 说明:这个数据是BroadcastReceiver中得到的,开始不知道怎么传递到MainActivity,后边仿照这个文章http://blog.csdn.net/a910626/article/details/45767079做成现在这样。

Android两个子线程同步问题

现在Android端有这么一个需求,将Android的屏幕不停地截图然后通过Socket发送,现在希望能将截图和发送分为两个线程,有没有哪位能教教我啊,因为刚做Android没有多久,最好能有一个小Demo讲解一下,例如一边截图,一边保存的Demo,非常感谢;

子线程用handler传递数据给另一个activity怎么办?

我在mainactivity中开了个子线程用来持续接收socket收到的数据,我在第二个activity中需要mainactivity子线程socket的数据来更新界面怎么?

Android UI线程和子线程问题

我有一个循环语句 for(~~~){ send(i); } //剩下的代码 如:adapter = new Adapter(List<String>xx); public void send(){ //开启一个线程 List.add(xx); } PS:我想要在for循环结束以后再执行剩下的代码 我该怎么办?

通过子线程传递消息,主线程中handler接受消息更新UI 带来的内存泄露问题,如何解决

请教一个问题: 伪代码: public class MainActivity{ new Thread(){ void run(){ ... handler.sendMessage(); } } private handler = new Handler(){ handMessage(){ 更新UI操作; } } } 这时提示handler会造成内存泄露,解决内存泄露需要重写Handler,实例化弱引用,这时重写的Handler为static,不能进行一些UI相关的操作,如Toast.(MainActivity,"",LENGTH_SHORT).show(); 那怎样通过handler传递的数据更新UI,同时规避内存泄露问题

Android用子线程进行http请求.是不是一定要用回调

今天刚刚看到http请求.在封装请求类httputils时候看到书上说.要使用子线程进行http请求.是不是因为如果有特别多的延时操作会让主线程阻塞 还有.用子线程请求时候.用回调的方法..我觉得这个回调自己写的接口.他也是在子线程使用的啊.那用不用回调有什么区别

主线程中更新列表,子线程中获取数据

怎么做才能不出现数据已经更新而列表无响应的错误?我试过都放在主线程操作,太卡了,都放在子线程里android又报ui更新必须在主线程中的错误

关于QT中子线程接收数据,主线程在lcdnumer上的显示问题

我是在QT中写的客户端,与linux中写的服务器连接,连通时自动在lcdnum上面分别显示温度和湿度。网上的例子也看了很多,但是还是一直出错,具体代码如下,有大牛给个思路吗? #ifndef MYTHREAD_H #define MYTHREAD_H #include <QObject> #include <QThread> #include <QString> #include <QDebug> #include <QSemaphore> class mythread { public: mythread(QObject * parent = 0); ~mythread(); protected: void run(); signals: void temsignal(int); void humsignal(int); private: int number; }; #endif // MYTHREAD_H #ifndef DIALOG3_H #define DIALOG3_H #include <QDialog> #include <QThread> #include "mythread.h" #include <QLCDNumber> #include <QObject> namespace Ui { class Dialog3; } class Dialog3 : public QDialog { Q_OBJECT public: explicit Dialog3(QWidget *parent = 0); ~Dialog3(); private slots: void lcdnum1set(int); void lcdnum2set(int); private: QLCDNumber *lcdnum1; //int number; //void lcdnumset1(int num); //void lcdnumset2(QString hum2); private: Ui::Dialog3 *ui; mythread *my_thread; }; #endif // DIALOG3_H #include "mythread.h" #include "mytcp.h" #include <QMessageBox> mythread::mythread(QObject *parent) :QThread(parent) { } mythread::~mythread() { } void mythread::run() { qDebug()<<"开始接收温度湿度数据"; int a=1; int b=2; int data; int buff1; int buff2; tcpsocket->waitForBytesWritten(); data=tcpsocket->write(a,sizeof(a)); if(data>0) { tcpsocket->waitForReadyRead(); tcpsocket->read(buff1); emit temsignal(buff1); sleep(1); } else { qDebug()<<"写数据失败"; } tcpsocket->waitForBytesWritten(); data=tcpsocket->write(b,sizeof(b)); if(num<0) { tcpsocket->waitForReadyRead(); tcpsocket->read(buff2); emit humsignal(buff2); sleep(1); } else { qDebug<<"写数据失败"; } } #include "dialog3.h" #include "ui_dialog3.h" #include "mytcp.h" #include <QMessageBox> #include "mythread.h" #include <QLCDNumber> Dialog3::Dialog3(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog3) { ui->setupUi(this); setWindowTitle("用户界面"); my_thread=new mythread();//connect之前需要实例化 connect(my_thread,SIGNAL(temsignal(int)),this,SLOT(lcdnum1set(int))); connect(my_thread,SIGNAL(humsignal(int)),this,SLOT(lcdnum2set(int))); //my_thread->start(); } Dialog3::~Dialog3() { delete ui; } void Dialog3::lcdnum1set(int num) { ui->lcdnum1->display(num); } void Dialog3::lcdnum2set(int num) { ui->lcdnum2->display(num); }

Android子线程中操作主线程的对象后,在主线程访问该对象,发现对象并未被改动

各位大神,Android新手求助!! 问题描述:在主线程中开启了一个子线程 用服务器的数据库取到本地实例化,让后把对象放到mRecList中,在子线程已经成功的把数据放到该对象中,但是在主线程中mRecList对象还是空的 ,这个对象是在主线程中new出来的,问题出在哪?? 下面是子线程的代码 ``` new Thread(new Runnable() { @Override public void run() { final ResultSet resultSet; // 这里开启一个子线程 该线程的功能是从远程数据库里面把数据提取出来 并且组装成本地的类,然后放到mReclist的表中 try { String sql = "select * from course"; DBconnection con = new DBconnection(); ResultSet rs = null; String str = ""; rs = con.doQuery(sql, "quxue"); while (rs.next()) { rs.next(); // String id = rs.getString(2); String imageUrl = rs.getString(3); String name = rs.getString(1); Message message=new Message(); TopRec topRec = new TopRec(name, imageUrl, id); mRecList.add(topRec); Log.d("TopRec", topRec.getImageUrl()); TopRec topRec1 = (TopRec) mRecList.get(0); Log.d("SQL", topRec1.getImageUrl() + " this is in list"); // 在这里的信息都可以正常显示,数据也已经成功的放到了mRecList对象中,但是主线程里面的mRecList里面还是空的 } con.close(); resultSet=rs; } catch (Exception e) { Log.d("SQL", e.toString()); } } }).start(); ```

android程序子线程里面再启动多线程去下载,为什么会变得超慢

如果在主线程里面启动多线程,下载速度达到5mbs。但是主界面会卡死,所以先启动了一个子线程,然后在子线程里面再启动多线程去下载,速度才只有0.2mbs,相差25倍,谁能解析一下?

初学Android开发,怎样在主线程和子线程间通信,看下面

先从主线程向子线程传递消息,要在子线程中建立looper和handler,然后在从子线程向主线程传递消息,是使用之前的handler还是在主线程中在建立一个handler呢,如果是后者,那在一个looper对多个handler的意义在哪呢

c#如何通过子线程控制主线程控件呢?

我主窗口有个webbrowser控件,想通过子线程点击已显示出来的网页实现填写的功能,要怎么实现呢?我直接写代码会出错; 求大神贴点代码! 我用主线程弄个按钮是可以点击的,就是子线程不行 错误信息: “System.InvalidCastException”类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 指定的转换无效。 线程代码 HtmlElement ht = webBrowser1.Document.GetElementById("J_imlis"); HtmlElementCollection ht2 = ht.GetElementsByTagName("a"); foreach (HtmlElement item in ht2) { ab++; if (ab == 1) { item.InvokeMember("click"); //执行点击 break; } }

android 怎么获取子线程中传递的数据

在Thread中改变的值怎么传给UI线程并且赋值给全局变量? 用Handler的话不能将Handler获取到的值赋值给全局变量

我想实现两个子线程之间互相通讯的功能

private void Thread2() { new Thread() { @Override public void run() { super.run(); int i = 0; Looper.prepare(); handlerOne = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case MSG_JJ: Log.e("m_tag", "收到了Thread3发来的消息:"); break; } } }; for (int j = 0; j < 20; j++) { i++; } if (i > 10) { if (null != handlerOne) { Log.e("m_tag", "Thread2" + Thread.currentThread()); handlerOne.sendEmptyMessage(MSG_HH); } } Looper.loop(); } }.start(); } private void Thread3() { new Thread() { @Override public void run() { super.run(); int i = 0; Looper.prepare(); handlerTwo = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case MSG_HH: Log.e("m_tag", "收到了Thread2发来的消息:"); break; } } }; for (int j = 0; j < 50; j++) { i++; } if (i > 25) { if (null != handlerTwo) { Log.e("m_tag", "Thread3" + Thread.currentThread()); handlerTwo.sendEmptyMessage(MSG_JJ); } } Looper.loop(); } }.start(); } 代码如上所示,log打印的:11-20 15:48:33.920 5190-5190/? E/m_tag: btn2 11-20 15:48:33.920 5190-5206/? E/m_tag: Thread2Thread[Thread-152,5,main] 11-20 15:48:33.920 5190-5208/? E/m_tag: Thread3Thread[Thread-153,5,main] 就是发不出去,或者是发出去了没接受到???

qt 子线程串口发送数据异常

class UartQThread : public QThread { Q_OBJECT public: UartQThread(); void run(); private: QSerialPort *Uart; QString UartPort; uint32_t BaudRate; uint32_t DataBits; QString StopBits; QString Parity; bool UartReady; char readbuff[128]; public: void UartInit(); private slots: void UartRead(void); }; UartQThread::UartQThread() { UartInit(); } void UartQThread::run() { int result; while(true) { result = Uart->write("this is uart send test456"); qDebug("UartQThread 1000ms test:%d %d", result, Uart->bytesAvailable()); msleep(1000); } } void UartQThread::UartInit() { Uart = new QSerialPort(); UartReady = false; connect(Uart,SIGNAL(readyRead()),this,SLOT(UartRead())); //连接槽 // ...... 省略 串口波特率等设置 if(Uart->open(QIODevice::ReadWrite)) { qDebug("open uart port success"); } else { qDebug()<<"open uart fail"<<UartPort; } Uart->write("this is uart send test123"); } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); UartQThread *UartProcessD = new UartQThread(); UartProcessD->start(); } 使用QSerialport,UartQThread 继承QThread ,对端串口收到了 UartInit发送数据;但是run 函数中,循环write 发送数据,对端串口只收到一次, 如果将UartInit放到run 里面初始化,一条也发送不出去,也收不到

安卓如何用class的子线程向Activity中的主线程传信息

如题,在MainActivity中的一个TextView(UI--主线程)需要根据另一个class中的(子)线程的结果进行更改,请问大佬们如何在它们之间传递消息。 我试过在一个activity中使用handler传递消息(自己传自己),activity和class之间就不知该怎么写代码了。

安卓下建立socket就崩溃,分到子线程仍然不行,求助啊

原代码如下,如果我不用BUTTON去触发的话是可以建立SOCKET的,但是用上BUTTON,把建立SOCKET的方法放到子线程中,仍然exception会显示不能再主线程中使用网络操作,真心求解为什么,看了2天了,刚学JAVA,不太理解。 package com.example.xlguang.wifi; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class MainActivity extends ActionBarActivity { private EditText editText; private Button button; private TextView MTextview; Handler handler=new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText1); button = (Button)findViewById(R.id.button1); final RunnableThread runnable = new RunnableThread(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { handler.post(runnable); } }); } public class RunnableThread implements Runnable { public void run() { Socket socket = null; String message = editText.getText().toString()+ "\r\n" ; try { //创建客户端socket,注意:不能用localhost或127.0.0.1,Android模拟器把自己作为localhost socket = new Socket("172.16.5.30",8000); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter (socket.getOutputStream())),true); //发送数据 out.println(message); //接收数据 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg = in.readLine(); if (null != msg){ editText.setText(msg); System.out.println(msg); } else{ editText.setText("data error"); } out.close(); in.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ try { if (null != socket){ socket.close(); } } catch (IOException e) { e.printStackTrace(); } } } }

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问