繼上篇部落格對安卓爬蟲以及TextView更新的問題解釋
阿新 • • 發佈:2019-01-12
只能在主執行緒更新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(); }