继上篇博客对安卓爬虫以及TextView更新的问题解释

Posted 程序猿养成中

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继上篇博客对安卓爬虫以及TextView更新的问题解释相关的知识,希望对你有一定的参考价值。

只能在主线程更新ui,或者用handler传输。爬虫是在另一个异步线程进行,所以爬出来的数据对控件赋值就比较麻烦。这次使用了线程数据传到runnable将数据传到handler进行赋值。

 

结果图:

源码:

  String word="软件工程";
    // textView.setText(content.text().toString());//将爬取到的内容给另一个页面赋值
    class MyRunnable implements Runnable {
        @Override
        public void run() {
        try{
            Document doc = (Document) Jsoup.connect("https://baike.baidu.com/item/"+word).get();
            Element content = doc.select("div.para").first();
            //  String title = doc.title();
            //String title = doc.title();
            con=content.text().toString();
            Message message=new Message();
            message.obj=con;

        }catch(java.io.IOException e) {
            e.printStackTrace();
        }
            // TODO Auto-generated method stub
            System.out.println("马佳慧"+con);
            Message msg = new Message();
            Bundle bundle = new Bundle();
            bundle.putString("name", con);
            msg.setData(bundle);
            handler.sendMessage(msg);
        }

        Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                TextView  textView = ( TextView) findViewById(R.id.textView1);
                Bundle b = new Bundle();
                b = msg.getData();
                System.out.println(b.get("name")+"测试数据");
                textView.setText(b.get("name").toString());
            }
        };
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(activity_main);
        new Thread(new MyRunnable()).start();
    }

  

以上是关于继上篇博客对安卓爬虫以及TextView更新的问题解释的主要内容,如果未能解决你的问题,请参考以下文章

从源码的角度看 React JS 中批量更新 State 的策略(上)

解决安卓TextView异常换行,参差不齐等问题

爬虫必学知识之正则表达式下篇

新浪微博爬虫分享(2016年12月01日更新)

安卓网络编程学习——java原生网络编程

GoLang邮件发送Demo(继上篇msmtp)