manejo - hilos asynctask android
Android Honeycomb: NetworkOnMainThreadException incluso cuando se usa AsyncTask y no hay modo estricto. (2)
Me encuentro con una NetworkOnMainThreadException con mi aplicación Android 3.0. Buscando una solución encontré this , pero si lo comprendo correctamente, la configuración predeterminada sería que el modo estricto está desactivado.
Además, todo el acceso a mi red está en una AsyncTask
, así que no veo el punto en esta Excepción de todos modos.
Entonces, estoy bastante desesperado ahora que debo hacer para prevenir esto ...
Saludos cordiales, medusas
Editar:
Esta entrada de blog dice que AsyncTask debería ser suficiente, pero al menos aclara el punto StrictMode.
Solución:
Apagué el modo Strict (probablemente es mejor mantener algunas configuraciones, pero no podría molestarme ...):
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Después de eso, me encontré con una "java.lang.RuntimeException: este hilo prohíbe las solicitudes HTTP", pero encontré una solución para esto here . Sin embargo, estoy un poco confundido, ya que AndroidHttpClient
funcionó bien cuando lo usé en mi aplicación Android 2.0+ ...
Solución, parte 2
Resultó que usar AsyncTask era una buena idea, pero era bastante inútil si se hacía mal ... Así que no había nada de malo en la reacción del modo estricto. Debería haber escuchado, ¿eh? ;)
Sigue siendo bueno saber que está activado en Honeycomb por defecto.
En Android Honeycomb StrictMode está habilitado, desactívelo agregando el código en la función onCreate () ...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
StrictMode está activado de forma predeterminada en Honeycomb.
Ver decir link específicamente penaltyDeathOnNetwork()
. Me encontré con un problema similar.