关于线程和更新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();
原文地址:https://www.cnblogs.com/childhooding/p/4516062.html