Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 中的Android.OS.NetworkOnMainThreadException_Java_Android_Runtime Error - Fatal编程技术网

Java 中的Android.OS.NetworkOnMainThreadException

Java 中的Android.OS.NetworkOnMainThreadException,java,android,runtime-error,Java,Android,Runtime Error,我正在尝试获取用户的facebook个人资料图片及其缩略图,并在下载后将其添加到解析类中。看一看 @Override protected String doInBackground(String[] Params) { String accessToken = AccessToken ; String email = EMAIL; profile = com.facebook.Profile.getCurrentProfile(); User.put("di

我正在尝试获取用户的facebook个人资料图片及其缩略图,并在下载后将其添加到解析类中。看一看

@Override
protected String doInBackground(String[] Params) 
{

    String accessToken = AccessToken ;
    String email = EMAIL;
    profile =  com.facebook.Profile.getCurrentProfile();
    User.put("displayName", profile.getName());
    User.put("facebookId", profile.getId());
    User.setUsername(profile.getId());
    try
    {
            User.put("FBaccessToken", accessToken);
            User.setEmail(email);
    }
    catch (Exception e){

        Log.e("ERROR","Failed");
    }
    User.setPassword(profile.getId() + profile.getId());
    ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
    query.whereEqualTo("username", profile.getId());
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> list, ParseException e)
        {
            if (e == null)
            {
                //brace the lord no error
                if (list == null)
                {
                    parseSignUp() ;
                }
                else
                {
                    if  (list.isEmpty())
                    {
                        parseSignUp() ;
                    }
                    else
                    {
                        login(profile.getId(), (profile.getId() + profile.getId()));
                    }
                    for (ParseObject str : list)
                    {
                            Log.e("ERROR", "what ?");
                    }
                }


            }
            else
            {
                Log.e("ERROR", "not");

            }
        }
    });
    return "done";
   }
即使网络内容在AsyncTask中,此代码仍会抛出此错误

  12-04 19:02:27.773    4263-4263/com.socketmill.thisismohit.vine       E/ERROR﹕android.os.NetworkOnMainThreadException
  12-04 19:02:27.803    4263-4263/com.socketmill.thisismohit.vine E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at com.parse.ParseFile.<init>(ParseFile.java:188)
        at com.parse.ParseFile.<init>(ParseFile.java:218)
        at com.socketmill.thisismohit.vine.SendFeedBackJob.parseSignUp(SendFeedBackJob.java:207)
        at com.socketmill.thisismohit.vine.SendFeedBackJob$1.done(SendFeedBackJob.java:90)
        at com.socketmill.thisismohit.vine.SendFeedBackJob$1.done(SendFeedBackJob.java:75)
        at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115)
        at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4921)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
        at dalvik.system.NativeStart.main(Native Method)

12-04 19:02:27.773 4263-4263/com.socketmill.thismohit.vine E/错误﹕android.os.NetworkOnMainThreadException
12-04 19:02:27.803 4263-4263/com.socketmill.thismohit.vine E E/AndroidRuntime﹕ 致命异常:主
java.lang.NullPointerException
在com.parse.ParseFile.(ParseFile.java:188)
在com.parse.ParseFile.(ParseFile.java:218)
在com.socketmill.thismohit.vine.SendFeedBackJob.parseSignUp(SendFeedBackJob.java:207)上
在com.socketmill.thismohit.vine.SendFeedBackJob$1.done(SendFeedBackJob.java:90)上
在com.socketmill.thismohit.vine.SendFeedBackJob$1.done(SendFeedBackJob.java:75)上
在com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115)
位于android.os.Handler.handleCallback(Handler.java:615)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4921)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
在dalvik.system.NativeStart.main(本机方法)

仅仅因为它是在doInBackground中启动的,并不意味着内部的整个代码都是在后台线程中运行的。可能您正在使用的库正在使用UI线程发送并提供回调

读取时,
query.findInBackground(new FindCallback(){})
方法将在UI线程上运行
public void done(List List,ParseException e)
方法

这意味着您的
parseSignUp()
方法以及
geByteArrayFromURL
方法也在UI线程上运行


事实上,考虑到解析库为您处理这一切的事实。您可能应该完全从AsyncTask中删除解析库。因为它将在库完成执行之前转到
onPostExecute()
(您在
doInBackground

中启动一个新线程,仅仅因为它在doInBackground中启动,并不意味着在后台线程中运行的整个代码。可能您正在使用的库正在使用UI线程发送回调

读取时,
query.findInBackground(new FindCallback(){})
方法将在UI线程上运行
public void done(List List,ParseException e)
方法

这意味着您的
parseSignUp()
方法以及
geByteArrayFromURL
方法也在UI线程上运行


事实上,考虑到解析库为您处理这一切。您可能应该完全从AsyncTask中删除解析库。因为它将在库完成执行之前转到
onPostExecute()
(您在
doInBackground

中启动一个新线程FindInBackground的done回调方法在UI线程上运行,而不是在异步线程上运行

FindInBackground的done回调方法在UI线程上运行,而不是在异步线程上运行

您将获得一个NullPointerException,这就是导致应用程序崩溃的方法。E/ERROR﹕android.os.NetworkOnMainThreadException此错误正是您可能怀疑的。您可能正在主UI线程上使用网络。@somerandomusername我正在使用geByteArrayFromURL()中的网络服务,我正在doInBackground()中调用该服务,我只是不明白这是怎么回事surfacing@MarianoZorrilla空指针异常不是问题所在,android.os.NetworkOnMainThreadException是问题所在,当我尝试从network@somerandomusername这仍然行不通:(你得到了一个NullPointerException,它会使你的应用程序崩溃。E/ERROR﹕android.os.NetworkOnMainThreadException此错误正是您可能怀疑的。您可能正在主UI线程上使用网络。@somerandomusername我正在使用geByteArrayFromURL()中的网络服务,我正在doInBackground()中调用该服务,我只是不明白这是怎么回事surfacing@MarianoZorrilla空指针异常不是问题所在,android.os.NetworkOnMainThreadException是问题所在,当我尝试从network@somerandomusername这仍然行不通:(有趣的是,让我试试这个方法。这个方法很神奇,只是添加了一些布尔值,如果找到了用户,就在回调之后,我检查了标志并调用了parseSignup()非常有效。谢谢你的有趣,让我试试这个。这就像魔术一样有效,只是添加了一些布尔值,如果找到了用户,就在回调之后,我检查了标志并调用了parseSignup(),非常有效。谢谢你
  12-04 19:02:27.773    4263-4263/com.socketmill.thisismohit.vine       E/ERROR﹕android.os.NetworkOnMainThreadException
  12-04 19:02:27.803    4263-4263/com.socketmill.thisismohit.vine E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at com.parse.ParseFile.<init>(ParseFile.java:188)
        at com.parse.ParseFile.<init>(ParseFile.java:218)
        at com.socketmill.thisismohit.vine.SendFeedBackJob.parseSignUp(SendFeedBackJob.java:207)
        at com.socketmill.thisismohit.vine.SendFeedBackJob$1.done(SendFeedBackJob.java:90)
        at com.socketmill.thisismohit.vine.SendFeedBackJob$1.done(SendFeedBackJob.java:75)
        at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115)
        at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4921)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
        at dalvik.system.NativeStart.main(Native Method)