我想从服务XYZ调用非静态方法。该服务在启动时由接收器启动。 有人有想法从这个正在运行的服务中运行方法吗? 在这个论坛中的一个解决方案是使该方法是静态的,并使用单例模式执行。但是还有另一种方法吗?也许用活页夹?如何从广播中运行的服务执行方法?
//编辑,比如我有以下clases:
public class MyService extends Service{
.....
public void method(){
//TODO
}
}
public class MyBroadcastReceiver extends BroadcastReceiver{
.....
public void onReceive(Context context, Intent intent) {
String intentAction=intent.getAction();
if(intentAction.equals(Intent.ACTION_BOOT_COMPLETED)){
//start service
Intent serviceIntent = new Intent(context, MyService.class);
context.startService(serviceIntent);
}
else{
//TODO call method() in MyService
}
}
我如何调用该方法method()
?我知道我可以使用context.getSystemService()
系统服务。但是,我怎么能得到我自己的服务对象?
问候
我不确定你想要完成什么。当您通过服务进行广播时,您可以在任何活动活动中收听广播 - 当您收到广播时,您可以执行任何您想要的活动。如果您在接收广播时尝试在您的服务中运行某个方法,那么您也可以在没有单例的情况下执行该方法。 – jlindenbaum
我的服务和我的广播都是独立的。在更新中,我有一个例子 –