2017-01-17 2 views
0

Следующий код создает android.os.NetworkOnMainThreadExceptionI/O с внутренней резьбой по-прежнему генерирует android.os.NetworkOnMainThreadException

Что я делаю неправильно?

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

Intent источник класса

+0

Как вы знаете, что это, где исключение генерируется из? – clearlight

+1

@clearlight Я использую отладчик. Внутри службы есть http-вызов: HttpURLConnection conn; ... os = conn.getOutputStream(); там, где происходит исключение. Спасибо за редактирование, кстати. – dsb

+0

Что происходит в классе «Intent»? – clearlight

ответ

3

Из Android Услуги официальной документации:

Помните, что если вы используете службу, он по-прежнему работает в главном потоке вашего приложения по умолчанию, так что вы должны все равно создайте новую цепочку , если она выполняет интенсивные или блокирующие операции .

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

Итак, вам нужно создать новый поток в вы обслуживаете, а не снаружи.

Или использовать IntentService, который уже использует рабочий поток: https://developer.android.com/reference/android/app/IntentService.html

+0

Да. Так оно и было. Благодарим вас и благодарим простенький свет за попытку помочь. – dsb

+0

Добро пожаловать :) –

Смежные вопросы