gpt4 book ai didi

Android远程服务启动和停止

转载 作者:太空狗 更新时间:2023-10-29 15:14:15 24 4
gpt4 key购买 nike

我正在开发一个应用程序,可以异步调用服务器以获取通知。在主要 Activity 中一切正常。现在困扰我的是,我需要一种服务,该服务可以在应用程序未激活时轮询通知(就像 GMail 库存应用程序一样)。所以我在主要 Activity 的 onStop 函数中的另一个进程中启动远程服务,如下所示:

@Override
public void onStop() {
super.onStop();
if(prefs.getBoolean(OPTIONS_KEY_SERVICE, false)) {
startServiceIntent = new Intent(CloudAlarmsService.MY_SERVICE);
Bundle b = new Bundle();
b.putStringArray("duidCodes", duidCodes);
startServiceIntent.putExtras(b);
Log.d("SSE_SERVICE", "Starting Service");
startService(startServiceIntent);
}
}

它工作正常, Activity 结束后我会收到通知。现在我想在 Activity 开始时停止远程服务(这样我就不会同时拥有 Activity 和服务轮询服务器)。我这样做:

@Override
public void onResume() {
super.onResume();
stopService(new Intent(CloudAlarmsService.MY_SERVICE));
Log.d("SSE_SERVICE", "Stopping service");
}

CloudAlarmsService.MY_SERVICE 是我的服务类中的一个字符串:

public class CloudAlarmsService extends Service {
public static String MY_SERVICE = "cloudindustries.alarms.service.BACKGROUND_SERVICE";
...

而且它在 list xml 中也是这样声明的:

<service android:process=":alarms_poller" android:name=".CloudAlarmsService">
<intent-filter android:label="@string/serviceStopService">
<action android:name="cloudindustries.alarms.service.BACKGROUND_SERVICE" />
</intent-filter>
</service>

但是服务并没有停止,它一直在工作。在我关闭主要 Activity 后,另一个服务实例产生并继续轮询。

有什么我遗漏的吗?或者这可能是远程服务的不良用途,或者甚至还有另一种类型的服务/管理器可用于此类目的?

感谢您的帮助!

编辑:

问题澄清:是否可以从不同的 Activity (没有启动服务)停止远程服务?

最佳答案

尝试停止 CloudAlarmsService 服务:

Intent intent = new Intent();
intent.setClass(getApplicationContext(), CloudAlarmsService.class);
getApplicationContext().stopService(intent);

关于Android远程服务启动和停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957730/

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