歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發:Activity的外部實時刷新問題

很多人看到這個問題就會想到不就是用ContentObserver嗎

但ContentObserver並沒想象的那麼好,因為還沒做到精確到某一列  某一行的數據

所以會出現界面的頻繁刷新,或者是頻繁的判斷改變數據的內容。

用application域和類似反向控制的做法就可以很好的解決這個問題

application類

  1. public class ApplicationContext extends Application {  
  2.     public static final int FLUSH_MAIN_ACTIVITY=1;  
  3.     private Handler main;  
  4.     public void setMainHandler(Handler handler){  
  5.         main=handler;  
  6.     }  
  7.       
  8.     public void flushMain(){  
  9.         main.sendEmptyMessage(FLUSH_MAIN_ACTIVITY);  
  10.     }  
  11.   
  12. }  

activity類裡要實現的內部handler類

  1. Handler flushHandler = new Handler() {  
  2.     @Override  
  3.     public void handleMessage(Message msg) {  
  4.         switch (msg.what) {  
  5.         case ApplicationContext.FLUSH_MAIN_ACTIVITY:  
  6.             initData();  
  7.             initView();  
  8.             break;  
  9.         default:  
  10.             break;  
  11.         }  
  12.         super.handleMessage(msg);  
  13.     }  
  14. };  

activity裡的OnCreate方法裡只要設置好handler類就可以了

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

調用的時候更簡單 直接調用application的sendEmptyMessage方法就可以了

Copyright © Linux教程網 All Rights Reserved