android-高级API上的NetworkOnMainThreadException

android-高级API上的NetworkOnMainThreadException,第1张

概述我只有在较高的API上调试时才会强制关闭脚本:16,但是在API上运行时效果很好:10.可能是我的项目设置问题吗?这是对服务器的简单请求,以获取片段中的类别列表.gallery.javapublicclassgalleryextendsFragment{JSONArrayjArray;Stringresult=null;InputStre

我只有在较高的API上调试时才会强制关闭脚本:16,但是在API上运行时效果很好:10.可能是我的项目设置问题吗?

这是对服务器的简单请求,以获取片段中的类别列表.

gallery.java

public class gallery extends Fragment {    JsONArray jArray;    String result = null;    inputStream is = null;    StringBuilder sb = null;    private ListVIEw storeList;    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,            Bundle savedInstanceState) {        // Todo auto-generated method stub        VIEw myFragmentVIEw = inflater.inflate(R.layout.tab_frag1_layout,                container, false);        storeList = (ListVIEw) inflater.inflate(R.layout.List, null);        return myFragmentVIEw;    }    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        // Todo auto-generated method stub        super.onCreate(savedInstanceState);    }    @OverrIDe    public voID onActivityCreated(Bundle savedInstanceState) {        // Todo auto-generated method stub        super.onActivityCreated(savedInstanceState);        ArrayList<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>();        // http post        try {            httpClIEnt httpclIEnt = new DefaulthttpClIEnt();            httpPost httppost = new httpPost(                    "http://xxx.xxx.xxx/androID_link.PHP");            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));            httpResponse response = httpclIEnt.execute(httppost);            httpentity entity = response.getEntity();            is = entity.getContent();        } catch (Exception e) {            Log.e("log_tag", "Error in http connection" + e.toString());        }        // convert response to string        try {            BufferedReader reader = new BufferedReader(new inputStreamReader(                    is, "iso-8859-1"), 8);            sb = new StringBuilder();            sb.append(reader.readline() + "\n");            String line = "0";            while ((line = reader.readline()) != null) {                sb.append(line + "\n");            }            is.close();            result = sb.toString();        } catch (Exception e) {            Log.e("log_tag", "Error converting result " + e.toString());        }        // paring data        int ct_ID;        String ct_name;        try {            jArray = new JsONArray(result);            JsONObject Json_data = null;            for (int i = 0; i < jArray.length(); i++) {                Json_data = jArray.getJsONObject(i);                ct_ID = Json_data.getInt("brand_ID");                ct_name = Json_data.getString("serIEs_name");            }        } catch (JsONException e1) {            Toast.makeText(getActivity(), "No Data Found", Toast.LENGTH_LONG)                    .show();        } catch (ParseException e1) {            e1.printstacktrace();        }    }

log.txt的

01-29 03:25:54.653: E/log_tag(4324): Error in http connectionandroID.os.networkonmainthreadException01-29 03:25:54.653: E/log_tag(4324): Error converting result java.lang.NullPointerException01-29 03:25:54.653: W/dalvikvm(4324): threadID=1: thread exiting with uncaught exception (group=0xb5e98288)01-29 03:25:54.653: E/AndroIDRuntime(4324): FATAL EXCEPTION: main01-29 03:25:54.653: E/AndroIDRuntime(4324): java.lang.NullPointerException01-29 03:25:54.653: E/AndroIDRuntime(4324):     at org.Json.JsONTokener.nextCleanInternal(JsONTokener.java:116)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at org.Json.JsONTokener.nextValue(JsONTokener.java:94)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at org.Json.JsONArray.<init>(JsONArray.java:87)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at org.Json.JsONArray.<init>(JsONArray.java:103)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at com.nazartt.angTrading.gallery.onActivityCreated(gallery.java:93)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:891)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1080)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.support.v4.app.FragmentManagerImpl.run(FragmentManager.java:420)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.os.Handler.handleCallback(Handler.java:615)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.os.Handler.dispatchMessage(Handler.java:92)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.os.Looper.loop(Looper.java:137)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at androID.app.ActivityThread.main(ActivityThread.java:4745)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at java.lang.reflect.Method.invokeNative(Native Method)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at java.lang.reflect.Method.invoke(Method.java:511)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:553)01-29 03:25:54.653: E/AndroIDRuntime(4324):     at dalvik.system.NativeStart.main(Native Method)

解决方法:

如果尝试在主(UI)线程(StrictMode)上进行网络 *** 作,则新版本的AndroID(3.0)上会出现NetworkOnMainThreadException.使用AsyncTask进行网络 *** 作,设置简单,并且以逻辑方式进行 *** 作(在后台执行某些 *** 作,然后在完成后发布到UI线程).

总结

以上是内存溢出为你收集整理的android-高级API上的NetworkOnMainThreadException全部内容,希望文章能够帮你解决android-高级API上的NetworkOnMainThreadException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1094267.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存