Now let's make a record: android. OS. NetworkOnMainThreadException,
1. Add handler processing 2. Add the following configuration. 3. Then, in the main activity, call // access the network's webservice compatible High Version
Utils. setSystemVersionMethod (context );
The following is written in the tool class, and sometimes this error is reported when calling qq quick logon in the activity. The reason is that more than 4.0 is incompatible with webservice access to the network. // obtain the mobile phone version to prevent webservice access to the network from problems above 4.0.
Public static String GetSystemVersion (){
Return android. OS. Build. VERSION. RELEASE;
}
@ SuppressLint ("NewApi") // compatible with earlier versions
Public static void setSystemVersionMethod (Context context ){
String strVer = GetSystemVersion ();
StrVer = strVer. substring (0, 3). trim ();
Float fv = Float. valueOf (strVer );
'If (fv> 2.3 ){
StrictMode. setThreadPolicy (new StrictMode. ThreadPolicy. Builder (). detectDiskReads (). detectDiskWrites (). detectNetwork (). penaltyLog (). build ());
StrictMode. setVmPolicy (new StrictMode. VmPolicy. Builder (). detectLeakedSqlLiteObjects (). penaltyLog (). penaltyDeath (). build ());
}
}
AndroidosNetworkOnMainThreadException occurs in my program. When I use handler to start the download thread, an exception occurs.
You need to write the downloaded code to the thread. handler won't be able to transfer your download to the thread. Instead, it will keep your download in the main thread, handler is used for inter-thread communication. For example, when thread execution is complete, the UI must respond, but the thread cannot directly control the UI. This requires handler to tell the main thread to update the UI.
How to solve androidosnetworkonmainthreadexception
After android2.3, you must use another thread such as handler mechanism in the main thread, or use an asynchronous task to obtain network data.
If your network access operations must be performed in the main thread, add
If (GetVersion. GetSystemVersion () & gt; 2.3 ){
StrictMode. setThreadPolicy (new StrictMode. ThreadPolicy. Builder ()
. DetectDiskReads (). detectDiskWrites (). detectNetwork ()
. PenaltyLog (). build ());
StrictMode. setVmPolicy (new StrictMode. VmPolicy. Builder ()
. DetectLeakedSqlLiteObjects (). penaltyLog (). penaltyDeath ()
. Build ());
}
In this way, you can also perform network operations in the main thread in a later version.