Android服务未从设置初始化变量

时间:2011-08-25 19:42:35

标签: java android

我遇到了我的应用程序的问题,我似乎无法弄明白。

应用程序有一项服务,该服务在手机启动时启动,或者如果已经停止,则在主要活动运行之前启动,然后才能完成所有其他操作。

在活动的onCreate中我有:

serviceIntent.setClass(this, Service.class);
bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);
startService(serviceIntent);
WriteDisplay();

public void WriteDisplay(){
TextView t = (TextView)findViewById(R.id.tv1);
String strdisplay = Service.getDisplay();
t.setText(strdisplay);
}

在服务中我有:

    @Override 
public void onCreate(){
    super.onCreate();
    GetSettings();

}
public static String getDisplay() {
    return display;
}

GetSettings填充了来自settings.xml文件的getDisplay()中返回的display值。

然而,当我在活动中加载任何代码时,它只会失败并返回除空值之外的任何内容。

我在屏幕上有一个调用DrawCanvas()的刷新按钮;再次,如果我点击刷新按钮,它就能正确获取所有变量并处理代码。

我不明白为什么第一次运行时没有加载变量,而是在点击刷新按钮时正确加载。

1 个答案:

答案 0 :(得分:3)

绑定到服务是一种异步操作。您必须等到绑定完成后再调用服务方法。看看ServiceConnection.onServiceConnected()方法。它有一个IBinder参数。调用此方法时,可以将binder转换为其实际类型并调用其方法。

以下是开发绑定服务的指南:http://developer.android.com/guide/topics/fundamentals/bound-services.html

您应该仔细阅读并以类似的方式实施您的服务。