关于线程和更新UI线程的笔记
情景1:
向数据库中插入10000条数据的结果:
testData();//插入10000条数据 list = blackdao.findAll(); blackAdapter = new BlackAdapter(); lv_black.setAdapter(blackAdapter);
情景2:
//使用线程插入数据,
new Thread() { public void run() { testData();// 插入10000条数据 }; }.start(); list = blackdao.findAll(); blackAdapter = new BlackAdapter(); lv_black.setAdapter(blackAdapter);
注意:但是结果要重新退出,然后加载才会有数据,也就是说list中的数据没有更新
情景3:使用线程,用其他线程中的方法更新UI主线程
new Thread() { public void run() { list = blackdao.findAll(); runOnUiThread(new Runnable() { public void run() { blackAdapter = new BlackAdapter(); lv_black.setAdapter(blackAdapter); } }); }; }.start();
情景4:使用线程,用hanlder更新UI主线程
final Handler handler = new Handler() { public void handleMessage(Message msg) { // TODO String s = (String) msg.obj; if ("ok".equals(s)) { Toast.makeText(CallSmsSafeActiviy.this, "ok", 0).show(); blackAdapter = new BlackAdapter(); lv_black.setAdapter(blackAdapter); } } }; new Thread() { public void run() { list = blackdao.findAll(); Message msg = new Message(); msg.obj = "ok"; handler.sendMessage(msg); }; }.start();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。