我需要检查变量的值在服务中的变化情况,以便我可以使用新值更新UI。我目前正在使用一个无限循环来检查这个在新线程中,这将使用大量的资源/是否有一个更有效的方式来做到这一点?使用无限循环检查变量更改
1
A
回答
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尝试它,如果它解决了你的问题,然后标记答案。如果它对你有帮助,那么给你一些提供帮助的信息吧。快乐编码! –
相关问题
- 1. 检查无限循环。我使用的是布尔变量
- 2. 使用循环更改变量值
- 3. 无限循环更改权限
- 4. Java无法更改标签的文本和检查无限循环中的变量的状态
- 5. 更改增量变量会导致循环超出限制
- 6. 无限循环当使用检票口
- 7. 使用循环FOR改变的变量
- 8. 检查空进入无限循环
- 9. 增量while循环变得无限
- 10. 无限循环js更改标题
- 11. 无限循环与更改超时
- 12. 通过循环检查变量
- 13. Python检查txt变量循环
- 14. 用VBA mysql查询中的循环更改变量?
- 15. Python - while循环更改变量
- 16. Perl的foreach和更改循环变量
- 17. 在循环期间更改变量,Python
- 18. Jinja2:更改循环内变量的值
- 19. 更改GET请求变量while循环
- 20. 更改变量不影响while循环
- 21. Bash循环 - 更改变量名称
- 22. 在循环期间更改变量值
- 23. 无限循环使用Fortran
- 24. 无限循环使用Scanner.hasNextInt
- 25. 无限循环使用C
- 26. 更换无限循环
- 27. 更换无限循环
- 28. 安全使用循环变量循环
- 29. 不要更改for循环块内的循环变量
- 30. 在循环内更改for循环外的变量
您可以从服务 –
你需要一个简单的回调广播发送到你的活动取代上面的代码。轮询一个全局变量的变化绝对是你应该避免的。我只能像你发布的代码一样具体,但是服务已经构建了将更改广播给已注册更新的任何人的方式。 –
您基本上正在询问如何在服务和活动之间进行通信。在SO上搜索,你会发现很多东西在上面。 –