2013-11-14 78 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; 
    } 
} 

希望它有帮助。