如何从另一个对象访问服务内的变量



我有一个收集传感器数据的服务。该服务在类中启动,我们称之为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;
    }
}

希望它有帮助。

最新更新