线程和异步任务之间的Android差异
我一直在尝试连接到服务器以检索一些数据。我想到的第一件事是创建一个线程来异步连接线程和异步任务之间的Android差异,android,multithreading,android-asynctask,fragment,Android,Multithreading,Android Asynctask,Fragment,我一直在尝试连接到服务器以检索一些数据。我想到的第一件事是创建一个线程来异步连接 new Thread(new Runnable() { @Override public void run() { // retrieve data } }).run(); 但奇怪的是,我创建的线程与UI线程同步工作,我遇到了一个网络异常,所以我最终使用了AsyncTask。你们知道什么会导致线程与UI线程非异步工作吗?我的类扩展为一个片段 必须使用start()而不是ru
new Thread(new Runnable() {
@Override
public void run() {
// retrieve data
}
}).run();
但奇怪的是,我创建的线程与UI线程同步工作,我遇到了一个网络异常,所以我最终使用了AsyncTask。你们知道什么会导致线程与UI线程非异步工作吗?我的类扩展为一个片段 必须使用
start()
而不是run()
启动线程,才能启动新线程:
new Thread(new Runnable() {
@Override
public void run() {
// retrieve data
}
}).start();
必须使用
start()
而不是run()
启动线程,才能启动新线程:
new Thread(new Runnable() {
@Override
public void run() {
// retrieve data
}
}).start();
试试这个链接告诉我它们之间的区别,但是我想知道为什么我不能在线程中做后台工作,因为两者都应该用于异步任务。试试这个链接告诉我它们之间的区别,但是我想知道为什么我不能在线程中做后台工作,因为两者都应该用于异步任务。是的,我认为这就是问题所在。但是跑步和出发有什么区别呢?我只能看到在它们之间抛出异常。run()与调用方的线程在同一个线程上运行,而start()启动一个新线程。啊,现在它有意义了。谢谢。@BarışcanKayaoğlu当您使用
Thread.run()
时,传递给线程构造函数的Runnable的run()
方法在同一线程中被调用。是的,我认为这就是问题所在。但是跑步和出发有什么区别呢?我只能看到在它们之间抛出异常。run()与调用方的线程在同一个线程上运行,而start()启动一个新线程。啊,现在它有意义了。谢谢。@BarışcanKayaoğlu当您使用Thread.run()
时,传递给线程构造函数的Runnable的run()
方法在同一线程中被调用。