1

我正在开发一项服务,并且我有以下代码onStartCommand

try {
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Networker.get("http://google.com/");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    t.run();
    t.join();
} catch (InterruptedException e) {
    e.printStackTrace();
}

即使网络代码在另一个线程中运行,我的服务仍然与NetworkOnMainThreadException. 等效AsyncTask代码不会导致此错误。是因为加盟吗?

我这样做是因为我只需要我的服务运行一个请求然后退出,所以我想使用上面的代码并返回 START_NON_STICKY 以使服务再次快速关闭。我应该做其他事情吗?

4

1 回答 1

2

调用start()并不run()在线程上启动线程。

run()只会Runnable在当前线程中运行你的。

于 2013-08-07T08:54:58.930 回答