Сота или более поздняя версия убивает все процессы, связанные с сетевым вводом-выводом в потоке пользовательского интерфейса.Это может объяснить, почему вы не видите проблему, когда вы не fetch()
.Gingerbread также имеет так называемый строгий режим, который может убить такой сетевой ввод-вывод или, по крайней мере, пометить его в журналах.
Если это не так, пожалуйста, опубликуйте трассировку стека, чтобы мы могли помочь вам в дальнейшем.1004 *
Ваша трассировка стека подтверждает то, что я угадал:
01-02 11:59:10.128: E/AndroidRuntime(971): Caused by: android.os.NetworkOnMainThreadException
01-02 11:59:10.128: E/AndroidRuntime(971): at java.net.URL.getContent(URL.java:447)
[...]
01-02 11:59:10.128: E/AndroidRuntime(971): at com.tjbiddle.puppywood.PuppyWood.fetch(PuppyWood.java:58)
В общем, это означает, что вам нужно выполнить сетевой ввод-вывод в фоновом потоке.Одним из способов достижения этого является, например, использование AsyncTask
, как, например, в в этом примере кода .onPreExecute
и onPostExecute
работают в потоке пользовательского интерфейса, а doInBackground
работает в своем собственном потоке.