很多人看到這個問題就會想到不就是用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方法就可以了