Java 使用无限循环检查变量更改

Java 使用无限循环检查变量更改,java,android,Java,Android,我需要检查服务在我的活动中何时更改变量的值,这样我就可以用新值更新UI。我目前正在一个新线程中使用一个无限循环来检查这一点,这是否会占用大量资源/是否有更有效的方法来执行此操作?您应该使用来自服务的广播来发送变量中的更改。首先,在你的主要活动中创建一个广播 BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context,

我需要检查服务在我的活动中何时更改变量的值,这样我就可以用新值更新UI。我目前正在一个新线程中使用一个无限循环来检查这一点,这是否会占用大量资源/是否有更有效的方法来执行此操作?

您应该使用来自服务的广播来发送变量中的更改。首先,在你的主要活动中创建一个广播

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("Broadcast","broadcast received");
        String value = intent.getStringExtra("Variable"); // this will get the value 
                                                          // send from Service
    }
};
接下来设置广播侦听的目的过滤器。您可以在活动的
onCreate()
中执行此操作

IntentFilter intentFilter = new IntentFilter("FROM_SERVICE");
registerReceiver(broadcastReceiver,intentFilter);
那么在你的服务中,你必须发送一个广播。如果要将某些数据从服务发送到活动,则必须将上面的代码替换为下面的代码

Intent intent = new Intent("FROM_SERVICE");
intent.putExtra("Variable", "change");
sendBroadcast(intent);

您可以通过需要简单回调的服务将广播发送到活动。轮询全局变量进行更改绝对是您应该避免的事情。我只能像你发布的代码一样具体,但是服务已经构建了向注册更新的任何人广播更改的方式。你基本上是在询问如何在服务和活动之间进行通信。继续搜索,你会在上面找到很多东西。@user3023751请查看我的更新。@user3023751尝试一下,如果它解决了你的问题,然后标记答案。给你一些参考,如果答案对你有帮助,请投票。快乐编码!!!