我有收集傳感器數據的服務。 該服務在一個班開始,我們稱之爲x
。 x
我在webview中定義了一些JavaScript接口的方法。如何從另一個對象訪問服務中的變量
現在我需要獲取x
中的數據,以便將其注入到webview以將其發佈到服務器。 這是最佳做法嗎?
如何獲得對x
內服務實例的引用,以便可以訪問其方法和屬性?
我有收集傳感器數據的服務。 該服務在一個班開始,我們稱之爲x
。 x
我在webview中定義了一些JavaScript接口的方法。如何從另一個對象訪問服務中的變量
現在我需要獲取x
中的數據,以便將其注入到webview以將其發佈到服務器。 這是最佳做法嗎?
如何獲得對x
內服務實例的引用,以便可以訪問其方法和屬性?
不知道它是否是最好的方法,但我最近通過使用應用程序結構解決了這個問題。
創建一個班級。
public class myApp extends Application {
public int yourData;
}
然後使用下面的代碼從程序中的任何Activity進行訪問。
myApp app = (myApp) getApplication();
int localVar = app.yourData;
不要忘了更新的Android清單
<application
android:name="myApp"
我知道兩種方式來做到這一點。 將您的服務聲明爲單例,並實現訪問變量的方法。
YourService.getInstance().getVariable();
但我不會推薦這種方法。
另一種方式是使用由Android提供的活頁夾系統。
您的活動中的代碼。
private YourService yourService;
private boolean serviceBound = false;
private ServiceConnection serviceConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName cn, IBinder ib) {
yourService = ((YourService.ServiceBinder) ib).getInfo();
serviceBound = true;
}
public void onServiceDisconnected(ComponentName cn) {
serviceBound = false;
}
};
然後你可以在你的服務對象上調用服務中實現的方法。
你還必須在你的服務中實現一個活頁夾這樣。
public class ServiceBinder extends Binder {
public YourService getInfo() {
return YourService.this;
}
}
希望它有幫助。