我有收集传感器数据的服务。 该服务在一个班开始,我们称之为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;
}
}
希望它有帮助。