2012-04-05 56 views
3

我有一個IntentService更新擴展應用程序類中的全局變量。在我的幾個活動中,我需要知道變量何時更改。 我是否必須在我的所有活動中實施BroadcastReceiver(並從我的服務中發送意圖),還是有更簡單的方式通知我的活動?如何通知活動有關應用程序中全局變量的更改?

謝謝!

+0

BroadCaste接收器是要走的路.. – ngesh 2012-04-05 05:13:08

回答

5

是的,BroadcastReceivers就是爲此而設計的。這就是說,爲什麼不製作一個具有BroadcastReceiver和所有相關邏輯的父類?那麼你的其他活動唯一需要做的只是繼承該父類。

請注意,每次發送我們的廣播時,您還應該在永久性存儲中設置某種全局變量(如共享首選項)。這樣,如果發送廣播時您的某個活動不在前臺,則它可以在持久存儲中檢查該變量,並將其返回到onResume()方法中,然後採取相應措施。

7

我也遇到過這種類型的問題。在解決方案的其中一個廣播接收器。但是我對此並不滿意。所以,我嘗試了另一種方法。您可以在andrdoid,refer this link的對象觀察模式中找到更多細節。

public class TestActivity extends Activity implements Observer { 
     BaseApp myBase; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      myBase = (BaseApp) getApplication(); 
      myBase.getObserver().addObserver(this); 
      myBase.getObserver().setValue(10); 

     } 

     @Override 
     public void update(Observable observable, Object data) { 
      // This method is notified after data changes. 

      Toast.makeText(this, "I am notified" + myBase.getObserver().getValue(), 
        0).show(); 
     } 
    } 



    public class Test extends Observable 
    { 

     private int value=2; 

     /** 
     * @return the value 
     */ 
     public int getValue() 
     { 
      return value; 
     } 

     /** 
     * @param value 
     *   the value to set 
     */ 
     public void setValue(int value) 
     { 
      this.value = value; 
      setChanged(); 
      notifyObservers(); 
     } 
    } 

    package app.tabsample; 

    import android.app.Application; 

    public class BaseApp extends Application { 
     Test mTest; 

     @Override 
     public void onCreate() { 
      super.onCreate(); 

      mTest = new Test(); 
     } 

     public Test getObserver() { 
      return mTest; 
     } 

    } 
+0

Interresting!這是我想要的......但這是線程安全嗎?如果我從其中線程是運行中活動的更新函數的IntensService(在另一個進程中運行)中設置值?忍耐與我我不是Java程序員。 :) – 2012-04-05 06:13:41

+0

看到這個鏈接:http://rameshandroidworld.wordpress.com/2012/04/05/object-observer-pattern-in-android/ – 2012-04-05 06:45:21

+0

更新鏈接http://andhradroid.wordpress.com/2012/04/ 05/object-observer-pattern-in-android/ – 2013-04-12 07:10:49

相關問題