现在的位置: 首页 > 综合 > 正文

activity的外部实时刷新问题

2013年12月08日 ⁄ 综合 ⁄ 共 777字 ⁄ 字号 评论关闭

很多人看到这个问题就会想到不就是用ContentObserver吗

但ContentObserver并没想象的那么好,因为还没做到精确到某一列  某一行的数据

所以会出现界面的频繁刷新,或者是频繁的判断改变数据的内容。

用application域和类似反向控制的做法就可以很好的解决这个问题

application类

public class ApplicationContext extends Application {
	public static final int FLUSH_MAIN_ACTIVITY=1;
	private Handler main;
	public void setMainHandler(Handler handler){
		main=handler;
	}
	
	public void flushMain(){
		main.sendEmptyMessage(FLUSH_MAIN_ACTIVITY);
	}

}

activity类里要实现的内部handler类

	Handler flushHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case ApplicationContext.FLUSH_MAIN_ACTIVITY:
				initData();
				initView();
				break;
			default:
				break;
			}
			super.handleMessage(msg);
		}
	};

activity里的OnCreate方法里只要设置好handler类就可以了

		appC = (ApplicationContext) getApplication();
		appC.setMainHandler(flushHandler);

调用的时候更简单 直接调用application的sendEmptyMessage方法就可以了

抱歉!评论已关闭.