我需要检查服务在活动中何时更改变量的值,以便我可以使用新值更新UI。我目前正在使用无限循环在新线程中检查这个,这将使用大量资源/是否有更有效的方法来执行此操作?
答案 0 :(得分:1)
您应该使用服务中的广播来发送变量中的更改。首先在主Activity中创建一个广播。
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
}
};
接下来设置广播侦听的intent过滤器。您可以在活动的onCreate()
中执行此操作。
IntentFilter intentFilter = new IntentFilter("FROM_SERVICE");
registerReceiver(broadcastReceiver,intentFilter);
然后在您的服务中,您必须发送广播。如果要将某些数据从Service发送到Activity,则必须用以下
替换上面的代码Intent intent = new Intent("FROM_SERVICE");
intent.putExtra("Variable", "change");
sendBroadcast(intent);