Now let's make a record: android. OS. NetworkOnMainThreadException,

Source: Internet
Author: User

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.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.