2017-04-16 31 views
0

我有一個後臺服務GpxService如何從意向(後臺服務)引用布爾變量?

public class GpxService extends Service implements LocationListener { 
    public boolean is_recording; 
    ... 
} 

我能啓動這個服務作爲我的MainActivity後臺服務:

gpxService = new Intent(MainActivity.this, GpxService.class); 
gpxService.setAction(GpxService.START_SERVICE); 
// notification, startForeground, etc. managed within gpxService onStartCommand 
startService(gpxService); 

如何訪問旗布爾is_recording在Intent MainActivity中的gpxService?


背景:我有兩個按鈕,記錄停止。在MainActivity的onCreate方法中,我使用setEnabled灰化一個,並讓其他可點擊。我想要哪個按鈕變灰,哪個按鈕可以點擊取決於後臺服務中的布爾標誌is_recording

MainActivity中我不能有is_recording,因爲它有時會被銷燬以清除內存。在這種情況下,在後臺服務仍在運行的情況下,重新打開應用程序將重置is_recording標誌,錯誤地觸發if語句,並灰顯錯誤的按鈕。

+0

從服務中發送本地廣播.. – Nithinlal

+0

將您的GpxService類用作IntentService,並使用廣播將您的布爾標誌作爲putExtra發送。 – Arpan

回答

1

對於您的情況,您應該使用IBinder建立Service對象與您的Activity實例之間的連接。

看看在bindService呼叫並建立連接後,你就可以訪問所有的公共領域和你的積極GpxService實例的方法。

+0

這似乎是對廣播更好的做法。我也能夠成功實現'IBinder'並在我的服務中訪問我的活動中的'public boolean is_recording'。 – ning

0

試圖通過創建一個對象來解決它,並訪問類的.... 中的變量它可能工作

0

另一個想法:嘗試使該服務mainActivity的子類,壽它dosent聲音作爲適當的這樣做的方式