我需要檢查變量的值在服務中的變化情況,以便我可以使用新值更新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上搜索,你會發現很多東西在上面。 –