欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
android.os.NetworkOnMainThreadException的解決方案

06-24 18:04:36.857: E/AndroidRuntime(22251): FATAL EXCEPTION: main
06-24 18:04:36.857: E/AndroidRuntime(22251): android.os.NetworkOnMainThreadException
06-24 18:04:36.857: E/AndroidRuntime(22251):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at libcore.io.IoBridge.sendto(IoBridge.java:473)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at java.net.DatagramSocket.send(DatagramSocket.java:284)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at com.example.com.ihome.bang.util.UdpHelper.send(UdpHelper.java:93)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at com.example.com.ihome.bang.adapter.ListViewAdapter$2.onClick(ListViewAdapter.java:210)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at android.view.View.performClick(View.java:4171)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at android.view.View$PerformClick.run(View.java:17070)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at android.os.Handler.handleCallback(Handler.java:615)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at android.os.Looper.loop(Looper.java:137)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at android.app.ActivityThread.main(ActivityThread.java:4797)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at java.lang.reflect.Method.invokeNative(Native Method)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at java.lang.reflect.Method.invoke(Method.java:511)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:804)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:571)
06-24 18:04:36.857: E/AndroidRuntime(22251):     at dalvik.system.NativeStart.main(Native Method)

原來(lái)在A(yíng)ndroid2.2上面運行的好好的一個(gè)網(wǎng)絡(luò )應用程序,主要是發(fā)送UDP信息跟服務(wù)器進(jìn)行通信的程序,安裝到4.0上面就爆出了這個(gè)問(wèn)題。

查了一下官方文檔。文檔上說(shuō):NetworkOnMainThreadException是因為應用程序在主線(xiàn)程上嘗試網(wǎng)絡(luò )操作。另外,這個(gè)異常在Honeycomb SDK或更高版本的SDK上才會(huì )拋出。低版本的SDK允許應用程序在主線(xiàn)程或loop線(xiàn)程執行網(wǎng)絡(luò )操作,但不鼓勵這樣做。

 

方法1:我們可以把android:targetSdkVersion=”Version Num”這句話(huà)從AndroidManifest.xml去掉,問(wèn)題就解決了,但不是治本的解決方案。(如下圖所示)

方法2:在進(jìn)行網(wǎng)絡(luò )通信的部分,單獨執行異步任務(wù)。

現在讓我們思考一下,讓原有代碼修改最小的一種方法。如果程序對實(shí)時(shí)性的要求不是很高的話(huà),我們可以創(chuàng )建一個(gè)異步任務(wù)類(lèi),這個(gè)異步任務(wù)類(lèi)里面含有一個(gè)網(wǎng)絡(luò )消息隊列(Queue)。這個(gè)類(lèi)通過(guò)對外提供一個(gè)消息入隊列的接口,在異步類(lèi)內部進(jìn)行消息的發(fā)送。當要發(fā)送消息的時(shí)候(也就是原來(lái)進(jìn)行網(wǎng)絡(luò )操作的地方,我們假設是發(fā)送消息),我們將網(wǎng)絡(luò )消息加入Queue,在異步任務(wù)里面用一個(gè)while循環(huán)查詢(xún)Queue,當Queue中有數據的時(shí)候就進(jìn)行發(fā)送,沒(méi)有的話(huà),sleep一段時(shí)間。具體的代碼如下所示。

package com.example.com.ihome.bang.tool;import java.util.LinkedList;import java.util.Queue;import com.example.com.ihome.bang.util.UdpHelper;import android.os.AsyncTask;import android.util.Log;public class SendThread extends AsyncTask{    private static Queue<String> queue = new LinkedList<String>();      public static Boolean SendOrder(String Order){        queue.offer(Order);        return true;    }            @Override    protected Object doInBackground(Object... params) {        String str;        while (true) {            //Log.d(SendThread.class.getName(), "進(jìn)入doInBackground");            if ((str = queue.poll()) != null) {                //Log.d(SendThread.class.getName(), "doInBackground_發(fā)送"+str);                UdpHelper.sendReally(str);                try {                    Thread.sleep(100);                } catch (InterruptedException e) {                                        e.printStackTrace();                                    }            }                    }    }}

方法3:在進(jìn)行網(wǎng)絡(luò )通信的部分,用后臺線(xiàn)程來(lái)執行操作

自己創(chuàng )建線(xiàn)程的話(huà),比創(chuàng )建異步任務(wù)更麻煩一點(diǎn)。記住,當你要用線(xiàn)程來(lái)處理網(wǎng)絡(luò )通信部分的時(shí)候,記得將線(xiàn)程設置為后臺運行,也就是通過(guò)設置線(xiàn)程的屬性為”background”。我們可以通過(guò)傳遞參數 THREAD_PRIORITY_BACKGROUNDProcess.setThreadPriority() 。.如果我們不通過(guò)這種方法將線(xiàn)程的優(yōu)先級設為較低級別的話(huà),那么這個(gè)線(xiàn)程就會(huì )擁有跟UI線(xiàn)程一樣的優(yōu)先級,我們的應用程序就可能被這個(gè)線(xiàn)程拖慢。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android之a(chǎn)ndroid.os.NetworkOnMainThreadException異常
android.os.NetworkOnMainThreadException 異常處理
android調試出現E/AndroidRuntime(13678): java.lang.NoClassDefFoundError:
解決android.os.NetworkOnMainThreadException
深入理解Android系統第一彈
【轉】關(guān)于android需要用到高版本api導致低版本手機出現VerifyError的問(wèn)題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久