【问题标题】:Android difference between Thread and AsyncTaskAndroid Thread 和 AsyncTask 的区别
【发布时间】:2014-04-09 11:46:34
【问题描述】:

我一直在尝试连接到服务器以检索一些数据。我首先想到的是创建一个异步连接的线程。

new Thread(new Runnable() {
    @Override
    public void run() {
        // retrieve data
    }
}).run();

但奇怪的是,我创建的线程与 UI 线程同步工作,并且出现了网络异常,所以我最终使用了 AsyncTask。你们知道什么会导致线程与 UI 线程非异步工作吗?我的课程延伸到一个片段。

【问题讨论】:

标签: android multithreading android-asynctask fragment


【解决方案1】:

您必须以start() 而不是run() 开始您的线程才能开始新线程:

new Thread(new Runnable() {
    @Override
    public void run() {
        // retrieve data
    }
}).start();

【讨论】:

  • 是的,我认为这就是问题所在。但是运行和开始有什么区别?我只能看到它们之间抛出的异常。
  • run() 与调用者在同一线程上运行,而 start() 启动一个新线程。
  • 啊,现在说得通了。谢谢。
  • @BarışcanKayaoğlu 当您使用 Thread.run() 时,您传递给 Thread 构造函数的那个​​ Runnable 的 run() 方法在同一个线程中被调用。
猜你喜欢
  • 2013-07-02
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
相关资源
最近更新 更多