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