关于线程和更新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();

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。