Android 如何通知活动应用程序中全局变量的更改?

Android 如何通知活动应用程序中全局变量的更改?,android,notifications,broadcastreceiver,intentservice,Android,Notifications,Broadcastreceiver,Intentservice,我有一个IntentService,它更新扩展应用程序类中的全局变量。在我的一些活动中,我需要知道变量何时更改。 我是否必须在我的所有活动中实现广播接收器(并从我的服务发送意图),或者是否有更简单的方式通知我的活动 谢谢大家! 是的,广播接收机就是为此而设计的。也就是说,为什么不创建一个具有BroadcastReceiver和所有相关逻辑的单亲类呢?然后,您的其他活动必须做的唯一事情就是从父类继承 请注意,每次发送广播时,还应在持久性存储中设置某种全局变量(如共享首选项)。这样,当广播发送时,如

我有一个IntentService,它更新扩展应用程序类中的全局变量。在我的一些活动中,我需要知道变量何时更改。 我是否必须在我的所有活动中实现广播接收器(并从我的服务发送意图),或者是否有更简单的方式通知我的活动


谢谢大家!

是的,广播接收机就是为此而设计的。也就是说,为什么不创建一个具有BroadcastReceiver和所有相关逻辑的单亲类呢?然后,您的其他活动必须做的唯一事情就是从父类继承


请注意,每次发送广播时,还应在持久性存储中设置某种全局变量(如共享首选项)。这样,当广播发送时,如果您的某个活动不在前台,它可以在返回到
onResume()
方法时检查持久存储中的变量,并相应地采取行动。

我也遇到过此类问题。广播接收机是解决方案之一。但我对此并不满意。所以,我尝试了另一种方法。你可以在andrdoid的对象观察者模式中找到更多细节


广播接收器是一种方式…相互测试!这就是我所认为的。。。。。但这是线程安全的吗?如果我从IntensService(在另一个进程中运行)设置值,活动中的更新函数在哪个线程中运行?请容忍我,我不是Java程序员。:)请参阅此链接:更新的链接,任何人都想知道,您不能从IntentService使用此链接
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;
        }

    }