2014-01-05 28 views
1

我需要检查变量的值在服务中的变化情况,以便我可以使用新值更新UI。我目前正在使用一个无限循环来检查这个在新线程中,这将使用大量的资源/是否有一个更有效的方式来做到这一点?使用无限循环检查变量更改

+2

您可以从服务 –

+1

你需要一个简单的回调广播发送到你的活动取代上面的代码。轮询一个全局变量的变化绝对是你应该避免的。我只能像你发布的代码一样具体,但是服务已经构建了将更改广播给已注册更新的任何人的方式。 –

+0

您基本上正在询问如何在服务和活动之间进行通信。在SO上搜索,你会发现很多东西在上面。 –

回答

1

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

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); 
+0

好的谢谢,这更有意义 – baldazan

+0

@ user3023751尝试它,如果它解决了你的问题,然后标记答案。如果它对你有帮助,那么给你一些提供帮助的信息吧。快乐编码! –