Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Android 致命异常:使用Jsoup时线程_Android_Jsoup - Fatal编程技术网

Android 致命异常:使用Jsoup时线程

Android 致命异常:使用Jsoup时线程,android,jsoup,Android,Jsoup,我无法通过Jsoup获得谷歌主页的标题。我得到了致命异常:线程 日志: 10-19 05:46:44.153: E/AndroidRuntime(597): FATAL EXCEPTION: Thread-75 10-19 05:46:44.153: E/AndroidRuntime(597): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a vie

我无法通过Jsoup获得谷歌主页的标题。我得到了
致命异常:线程

日志:

10-19 05:46:44.153: E/AndroidRuntime(597): FATAL EXCEPTION: Thread-75
10-19 05:46:44.153: E/AndroidRuntime(597): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:3939)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:701)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.view.View.requestLayout(View.java:12555)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.view.View.requestLayout(View.java:12555)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.view.View.requestLayout(View.java:12555)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.view.View.requestLayout(View.java:12555)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:268)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.view.View.requestLayout(View.java:12555)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.widget.TextView.checkForRelayout(TextView.java:6716)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.widget.TextView.setText(TextView.java:3256)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.widget.TextView.setText(TextView.java:3110)
10-19 05:46:44.153: E/AndroidRuntime(597):  at android.widget.TextView.setText(TextView.java:3085)
10-19 05:46:44.153: E/AndroidRuntime(597):  at com.example.spravochnik05.MainActivity$1.run(MainActivity.java:34)
10-19 05:46:44.153: E/AndroidRuntime(597):  at java.lang.Thread.run(Thread.java:856)
代码:

新错误日志:

10-19 06:08:28.302: E/AndroidRuntime(846): FATAL EXCEPTION: main
10-19 06:08:28.302: E/AndroidRuntime(846): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.spravochnik05/com.example.spravochnik05.MainActivity}: android.os.NetworkOnMainThreadException
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.os.Looper.loop(Looper.java:137)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.ActivityThread.main(ActivityThread.java:4340)
10-19 06:08:28.302: E/AndroidRuntime(846):  at java.lang.reflect.Method.invokeNative(Native Method)
10-19 06:08:28.302: E/AndroidRuntime(846):  at java.lang.reflect.Method.invoke(Method.java:511)
10-19 06:08:28.302: E/AndroidRuntime(846):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-19 06:08:28.302: E/AndroidRuntime(846):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-19 06:08:28.302: E/AndroidRuntime(846):  at dalvik.system.NativeStart.main(Native Method)
10-19 06:08:28.302: E/AndroidRuntime(846): Caused by: android.os.NetworkOnMainThreadException
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
10-19 06:08:28.302: E/AndroidRuntime(846):  at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
10-19 06:08:28.302: E/AndroidRuntime(846):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
10-19 06:08:28.302: E/AndroidRuntime(846):  at java.net.InetAddress.getAllByName(InetAddress.java:220)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
10-19 06:08:28.302: E/AndroidRuntime(846):  at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
10-19 06:08:28.302: E/AndroidRuntime(846):  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:425)
10-19 06:08:28.302: E/AndroidRuntime(846):  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
10-19 06:08:28.302: E/AndroidRuntime(846):  at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
10-19 06:08:28.302: E/AndroidRuntime(846):  at org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
10-19 06:08:28.302: E/AndroidRuntime(846):  at com.example.spravochnik05.MainActivity.onCreate(MainActivity.java:26)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.Activity.performCreate(Activity.java:4465)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-19 06:08:28.302: E/AndroidRuntime(846):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
10-19 06:08:28.302: E/AndroidRuntime(846):  ... 11 more
10-19 06:08:28.302:E/AndroidRuntime(846):致命异常:main
10-19 06:08:28.302:E/AndroidRuntime(846):java.lang.RuntimeException:无法启动活动组件信息{com.example.spravochnik05/com.example.spravochnik05.MainActivity}:android.os.NetworkOnMainThreadException
10-19 06:08:28.302:E/AndroidRuntime(846):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
10-19 06:08:28.302:E/AndroidRuntime(846):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
10-19 06:08:28.302:E/AndroidRuntime(846):在android.app.ActivityThread.access$600(ActivityThread.java:122)
10-19 06:08:28.302:E/AndroidRuntime(846):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
10-19 06:08:28.302:E/AndroidRuntime(846):位于android.os.Handler.dispatchMessage(Handler.java:99)
10-19 06:08:28.302:E/AndroidRuntime(846):在android.os.Looper.loop(Looper.java:137)
10-19 06:08:28.302:E/AndroidRuntime(846):位于android.app.ActivityThread.main(ActivityThread.java:4340)
10-19 06:08:28.302:E/AndroidRuntime(846):位于java.lang.reflect.Method.Invokenactive(本机方法)
10-19 06:08:28.302:E/AndroidRuntime(846):在java.lang.reflect.Method.invoke(Method.java:511)
10-19 06:08:28.302:E/AndroidRuntime(846):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-19 06:08:28.302:E/AndroidRuntime(846):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-19 06:08:28.302:E/AndroidRuntime(846):在dalvik.system.NativeStart.main(本机方法)
10-19 06:08:28.302:E/AndroidRuntime(846):由以下原因引起:android.os.NetworkOnMainThreadException
10-19 06:08:28.302:E/AndroidRuntime(846):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
10-19 06:08:28.302:E/AndroidRuntime(846):位于java.net.InetAddress.lookupHostByName(InetAddress.java:391)
10-19 06:08:28.302:E/AndroidRuntime(846):位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
10-19 06:08:28.302:E/AndroidRuntime(846):位于java.net.InetAddress.getAllByName(InetAddress.java:220)
10-19 06:08:28.302:E/AndroidRuntime(846):位于libcore.net.http.HttpConnection.(HttpConnection.java:71)
10-19 06:08:28.302:E/AndroidRuntime(846):在libcore.net.http.HttpConnection.(HttpConnection.java:50)
10-19 06:08:28.302:E/AndroidRuntime(846):在libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
10-19 06:08:28.302:E/AndroidRuntime(846):在libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
10-19 06:08:28.302:E/AndroidRuntime(846):在libcore.net.http.HttpConnection.connect(HttpConnection.java:128)上
10-19 06:08:28.302:E/AndroidRuntime(846):位于libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
10-19 06:08:28.302:E/AndroidRuntime(846):位于libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
10-19 06:08:28.302:E/AndroidRuntime(846):位于libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
10-19 06:08:28.302:E/AndroidRuntime(846):位于libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
10-19 06:08:28.302:E/AndroidRuntime(846):在libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
10-19 06:08:28.302:E/AndroidRuntime(846):位于org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:425)
10-19 06:08:28.302:E/AndroidRuntime(846):位于org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
10-19 06:08:28.302:E/AndroidRuntime(846):位于org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
10-19 06:08:28.302:E/AndroidRuntime(846):位于org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
10-19 06:08:28.302:E/AndroidRuntime(846):位于com.example.spravochnik05.MainActivity.onCreate(MainActivity.java:26)
10-19 06:08:28.302:E/AndroidRuntime(846):在android.app.Activity.performCreate(Activity.java:4465)上
10-19 06:08:28.302:E/AndroidRuntime(846):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)上
10-19 06:08:28.302:E/AndroidRuntime(846):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
10-19 06:08:28.302:E/AndroidRuntime(846):。。。还有11个
我怎样才能解决这个问题

textView.setText(doc.title());
拆下这条线。无法从线程更新UI。相反,请使用runOnUIThread(),或使用线程处理程序

最好的选择是使用Android推荐的
AsyncTask

下面是的用法,它在
doInBackground()方法中执行后台操作
,并在
onPostExecute
方法中更新UI

下面是一个使用
异步任务的示例:

在您的
onCreate
方法中:

new DownloadFilesTask().execute();
onCreate
结束后添加此类:

 private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... arg0) {
            doc = Jsoup.connect("http://google.com").get();
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            if (doc != null) {
                textView.setText(doc.title());
            }
            else {
                textView.setText("Doc not found");
            }
        }
}
私有类下载文件任务扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…arg0){
doc=Jsoup.connect(“http://google.com).get();
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
如果(doc!=null){
textView.setText(doc.title());
}
否则{
textView.setText(“未找到文档”);
}
}
}
拆下这条线。无法从线程更新UI。相反,请使用runOnUIThread()
,或使用线程处理程序

最好的选择是使用Android推荐的
AsyncTask

下面是的用法,它在
doInBackground()方法中执行后台操作
,并在
onPostExecute
方法中更新UI

下面是一个使用
异步任务的示例<
 private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... arg0) {
            doc = Jsoup.connect("http://google.com").get();
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            if (doc != null) {
                textView.setText(doc.title());
            }
            else {
                textView.setText("Doc not found");
            }
        }
}
 .....
 try {
         doc = Jsoup.connect("http://google.com").get();
         MainActivity.this.runOnUiThread(new Runnable() {

           @Override
            public void run() {
                 textView.setText(doc.title());
             }
          });           
        } catch (IOException e) {
                    // TODO Auto-generated catch block
          e.printStackTrace();
  }
textView.setText(doc.title());
class DownloadFile extends AsyncTask<Void, Void, Void> {
    @Override
    protected String doInBackground(String... arg0) {
                your code
    }

}
new DownloadFile().execute()