2014-01-05 55 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嘗試它,如果它解決了你的問題,然後標記答案。如果它對你有幫助,那麼給你一些提供幫助的信息吧。快樂編碼! –