我的应用程序遇到了一个我似乎无法解决的问题。
该应用程序有一个服务,该服务会在手机启动时启动,或者如果手机已停止,则在主 Activity 运行时启动,然后再完成其他所有操作。
在 Activity 的 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 文件返回的显示值。
但是,当我在 Activity 中加载任何代码时,它只会失败并且只返回空值。
我在屏幕上有一个调用 DrawCanvas() 的刷新按钮;再次,如果我点击刷新按钮,它就能够正确获取所有变量并处理代码。
我不明白为什么变量在第一次运行 Activity 时没有加载,但当我点击刷新按钮时却正确加载。
最佳答案
绑定(bind)到服务是一个异步操作。您必须等待绑定(bind)完成,然后调用服务方法。看一下 ServiceConnection.onServiceConnected()
方法。它有一个 IBinder
参数。调用此方法时,您可以将 Binder 转换为其实际类型并调用其方法。
以下是开发绑定(bind)服务的指南:http://developer.android.com/guide/topics/fundamentals/bound-services.html
您应该仔细阅读它并以类似的方式实现您的服务。
关于java - Android 服务未从设置中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196247/