gpt4 book ai didi

android - 如何通过广播从正在运行的服务中执行方法?

转载 作者:搜寻专家 更新时间:2023-11-01 08:05:58 24 4
gpt4 key购买 nike

在广播中我想从 Service XYZ 调用一个非静态方法。该服务由接收器在启动时启动。有人想从这个正在运行的服务中运行方法吗?该论坛中的一种解决方案是使方法静态化并使用单例模式来执行。但是还有别的方法吗?也许用 Binder ?

//编辑例如我有以下类别:

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() 系统服务进行转换。但是我怎样才能得到我自己的服务对象呢?

问候

最佳答案

您可以在启动 Service 的 Intent 中使用 setAction 将操作字符串添加到您的 Intent 。在您服务的 onStartcommand 中,您可以提取 Intent 的操作,并基于此在您的服务中执行该方法。

您将始终使用 startService 向您的服务发送命令,这不会启动您的服务两次。它要么启动一次,要么将新 Intent 发送到服务。

因此,在您的启动完成部分中,您应该将 Intent 操作设置为您想要的任何内容,然后启动服务 - 您可以完全删除 else block 。

在您的服务中实现onStartCommand,提取 Intent 的操作,然后基于该操作您可以执行您的方法。

关于android - 如何通过广播从正在运行的服务中执行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com