码迷,mamicode.com
首页 > 系统相关 > 详细

Eclipse Rap开发 异步刷新UI处理

时间:2015-12-01 12:30:54      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

1、Display.getCurrent()获取的是当前线程的display对象,如果当前在非UI线程中那么获取到的display对象为空;
     一般Display.getCurrent() 用来判断当前是否UI线程
2、异步刷新问题,
  • 异步任务需要放到非UI线程中执行,
  • 回头更新UI的时候需要使用display.asynExec(runnable)来执行具体更新UI效果的操作,保证线程的非阻塞
上面的方法在RCP中有效,RAP中刷新UI后需要鼠标点击一次才能出现刷新后的效果
 
btnNewButton.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				
				new Thread(new Runnable(){

					@Override
					public void run() {
						try {
							Thread.sleep(3000);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
//						Display.getCurrent().asyncExec(new Runnable(){//null point current thread is not ui thread
						shell.getDisplay().asyncExec(new Runnable(){
							@Override
							public void run() {
								text.setText("我特么是异步的!!!???");
							}
						});
					}
					
				}).start();
			}
		});

  

 

 

需要实现异步UI刷新效果(WEB中的数据推送) 需要通过以下模型来实现(不过这个模型是阻塞式的交互效果并不好)

container.getDisplay().timerExec(0, new Runnable(){
            @Override
            public void run() {
                display.timeExec(1000,this);
            }
        });

  

Eclipse Rap开发 异步刷新UI处理

标签:

原文地址:http://www.cnblogs.com/wykCN/p/5009444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!