2013-11-14 79 views
0

我有收集傳感器數據的服務。 該服務在一個班開始,我們稱之爲xx我在webview中定義了一些JavaScript接口的方法。如何從另一個對象訪問服務中的變量

現在我需要獲取x中的數據,以便將其注入到webview以將其發佈到服務器。 這是最佳做法嗎?

如何獲得對x內服務實例的引用,以便可以訪問其方法和屬性?

回答

2

不知道它是否是最好的方法,但我最近通過使用應用程序結構解決了這個問題。

創建一個班級。

public class myApp extends Application { 
    public int yourData; 
} 

然後使用下面的代碼從程序中的任何Activity進行訪問。

myApp app = (myApp) getApplication(); 
int localVar = app.yourData; 

不要忘了更新的Android清單

<application 
    android:name="myApp" 
2

我知道兩種方式來做到這一點。 將您的服務聲明爲單例,並實現訪問變量的方法。

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; 
    } 
} 

希望它有幫助。