我有一个收集传感器数据的服务。该服务在类中启动,我们称之为x
。在x
中,我为 Web 视图中的 JavaScript 界面定义了几个方法。
现在我需要将这些数据放入x
以将其注入 Web 视图以将其发布到服务器。对此的最佳实践是什么?
如何获取对 x
中服务实例的引用,以便访问其方法和属性?
不确定这是否是最好的方法,但我最近通过使用应用程序结构解决了这个问题。
创建类。
public class myApp extends Application {
public int yourData;
}
然后使用以下代码从程序中的任何活动进行访问。
myApp app = (myApp) getApplication();
int localVar = app.yourData;
不要忘记更新您的安卓清单
<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;
}
}
希望它有帮助。