Android:服务活动通信
我只是在学习如何使用服务,有点困了 我有一个Android:服务活动通信,android,android-intent,android-activity,android-service,Android,Android Intent,Android Activity,Android Service,我只是在学习如何使用服务,有点困了 我有一个IntentService,用于下载一个文件队列。我有一个活动,可以打开和关闭应该下载的文件。下载完文件后,我更新了我的SharedReferences中的布尔值。我有两个问题: 启动服务的原始活动很可能会消失,但很可能该活动的新实例已启动。在这种情况下,我需要向该活动发送一条消息,以检查SharedReferences并相应地更新其UI。因此,我的问题是:如何向可能正在运行或可能未运行的活动发送消息? 活动可以在服务运行时打开和关闭应下载的文件。这造
IntentService
,用于下载一个文件队列。我有一个活动
,可以打开和关闭应该下载的文件。下载完文件后,我更新了我的SharedReferences
中的布尔值。我有两个问题:
你可能想要的是某种绑定服务。 您可以向它发送消息,也可以从中接收消息。 因此,当您的活动再次启动时,它可以再次绑定到服务,并在下载完成后接收回调。 此外,活动还可以向服务发送消息以启动或停止下载。 好的方面是:当您绑定到服务并且它还没有运行时,服务就会启动
希望这有帮助:)您可能想要的是某种绑定服务。 您可以向它发送消息,也可以从中接收消息。 因此,当您的活动再次启动时,它可以再次绑定到服务,并在下载完成后接收回调。 此外,活动还可以向服务发送消息以启动或停止下载。 好的方面是:当您绑定到服务并且它还没有运行时,服务就会启动
希望这有帮助:)问题1和问题2的可能答案: 使用广播接收机: 对于问题1:您可以将您的活动注册到您将定义的某种接收器,并在需要广播时发送给它。如果活动已注册到广播-它将接收它
对于问题2:相同的答案:将您的服务注册到特殊广播代表您希望向该服务发送的消息。如果它没有运行(也没有注册到广播中),那么就不会有任何结果 问题1和问题2的可能答案:
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)) {
if ("com.pkg.PlayerService".equals(service.service
.getClassName())) {
isrunning = true;
;
}
}
return isrunning;
使用广播接收机:
对于问题1:您可以将您的活动注册到您将定义的某种接收器,并在需要广播时发送给它。如果活动已注册到广播-它将接收它
对于问题2:相同的答案:将您的服务注册到特殊广播代表您希望向该服务发送的消息。如果它没有运行(也没有注册到广播中),那么就不会有任何结果
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)) {
if ("com.pkg.PlayerService".equals(service.service
.getClassName())) {
isrunning = true;
;
}
}
return isrunning;
运行此代码将为您提供服务状态。您可以在u r intentService的onDestroy()中创建一个日志,并检查您的服务何时停止
运行此代码将为您提供服务状态。您可以在u r intentService的onDestroy()中登录,并检查您的服务何时停止。用于发送意图,它们将保留在应用程序范围内,然后在活动中使用广播接收器。用于发送意图,它们将保留在应用程序范围内,然后在活动中使用广播接收器。您是如何解决问题的?您是如何解决问题的?