Android Honeycomb: NetworkOnMainThreadException even when using AsyncTask and no strict mode?
I run into a NetworkOnMainThreadException with my Android 3.0 app. Searching for a solution I found this, but if I understand this correctly, default setting would be that the strict mode is turned off.
Also, all my network access is in an AsyncTask
, so I don't see the point in this Exception anyway.
So, I'm quite desperate now what I should do to prevent this...
Kind regards, jellyfish
Edit:
This blog entry says that AsyncTask should be enough, but at least clarifies the StrictMode point.
Solution:
I turned off the StrictMode (its probably better to keep some settings but I couldn't be bothered...):
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
After that, I did run into a "java.lang.RuntimeException: This thread forbids HTTP requests", but found a solution for this here. I'm a bit confused, though, as AndroidHttpClient
worked fine when I used it in my Android 2.0+ app...
Solution, part2
As it turned out, using AsyncTask was a nice idea but pretty useless开发者_开发技巧 if done wrong... So there was nothing wrong with the strict mode's reaction. Should have listened, er? ;)
Still good to know it's activated on Honeycomb by default.
In Android Honeycomb StrictMode is enabled, turn it off adding the code on the onCreate() function...
@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 is turned on by default in Honeycomb.
See say link specifically penaltyDeathOnNetwork()
. I ran into a similar problem.
精彩评论