Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程和异步任务之间的Android差异_Android_Multithreading_Android Asynctask_Fragment - Fatal编程技术网

线程和异步任务之间的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()
方法在同一线程中被调用。