为什么Jsoup.connect()。get()在我的Android应用程序中没有在线程内部工作?

时间:2015-01-26 22:31:21

标签: android multithreading jsoup

点击按钮,我在Android应用程序中使用Jsoup执行网页报废。我已经为此创建了自己的线程。问题是Jsoup.connect()。get()之后的行没有被执行。我无法弄清楚这背后的原因。这是我的代码: -

but1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Log.e("Check","Inside button click!!");
            //obj=new Helper(et1.getText().toString(),counter);
            counter++;
            //new abc().execute(et1.getText().toString());

            Thread t0=new Thread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try{k=0;
                    Log.e("check","inside thread 0");
                         for(i=1;i<=5;i++){  
                             Log.e("check", "inside loop");
                                String url1="some url";
                                url1=url1+et1.getText().toString();
                                url1=url1+"xyz";
                                Log.e("Check", "Scanned url");
                                org.jsoup.nodes.Document rec=Jsoup.connect(url1).get();
                                //Thread.sleep(5000);
                                Log.e("check", "After jsoup");
                                Elements names=rec.getElementsByTag("img");
                                    for(;k<names.size();k++){
                                    Test.arr[0][k]=names.get(k).attr("alt");

                                }


                               }
                    }catch(Exception E){}
                }
            });
            t0.start();


            et3.setText(arr[0][3]);
        }

    });

1 个答案:

答案 0 :(得分:0)

您不应该直接在活动或片段或Android上使用Thread类,而是使用AsyncTaskHanlder

使用AsyncTask的示例:

button.setOnClickListener(new View.OnClickListener() 
{
   @Override
   public void onClick(View arg0) 
   {
       YourTask task = new YourTask();
       task.execute();
   }
});

基本上你的问题是你没有从你初始化到主线程的线程中回发数据。