Java Android服务未根据设置初始化变量

Java Android服务未根据设置初始化变量,java,android,Java,Android,我的应用程序遇到了一个我似乎无法解决的问题 应用程序有一个服务,当手机启动时启动,或者如果手机已停止,则在主活动运行时启动,然后再执行其他操作 在活动的onCreate中,我有: serviceIntent.setClass(this, Service.class); bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE); startService(serviceIntent); WriteDisplay(); pu

我的应用程序遇到了一个我似乎无法解决的问题

应用程序有一个服务,当手机启动时启动,或者如果手机已停止,则在主活动运行时启动,然后再执行其他操作

在活动的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填充getDisplay()中从settings.xml文件返回的显示值

然而,当我在活动中加载任何代码时,它就会失败,只返回空值

我在屏幕上有一个刷新按钮,可以调用DrawCanvas();同样,如果我点击刷新按钮,它能够正确地获取所有变量并处理代码


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

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

以下是开发绑定服务的指南:


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

因此,如果我正确理解它,我应该在示例中被覆盖的onServiceConnected方法末尾调用WriteDisplay?是的,它不能是
静态的
。它必须是
Binder
子类的实例方法。您必须使用
IBinder
参数调用它。