内部线程中的I / O仍然会生成android.os.NetworkOnMainThreadException

时间:2017-01-17 21:24:41

标签: android-service ioexception

以下代码生成android.os.NetworkOnMainThreadException

我做错了什么?

Thread t = new Thread() {
    public void run() {
        Intent i = new Intent(EntryActivity.this, UpdateBizLocationService.class);
        startService(i);
    }
};
t.start();

Intent班级来源

1 个答案:

答案 0 :(得分:3)

来自Android服务官方文档:

  

请记住,如果您使用某项服务,它仍会在您的服务中运行   默认情况下,应用程序的主线程,所以你仍然应该创建一个新的   服务中的线程,如果它执行密集或阻塞   操作

https://developer.android.com/guide/components/services.html

因此,您需要在服务中中创建新的线程,而不是在外部。

或者使用已经使用工作线程的 IntentService https://developer.android.com/reference/android/app/IntentService.html