Android 在这种情况下,我为什么要使用服务?

Android 在这种情况下,我为什么要使用服务?,android,android-intent,android-service,Android,Android Intent,Android Service,我将遵循以下基本教程: 正如你所看到的,它基本上有以下功能(如果我错了,请纠正我): 一旦启动MainActivity,将为特定日期和时间设置警报 一旦到达此日期和时间,它就开始打算MyReceiver.class 第一站。:MyReceiver正在扩展BroadcastReceiver。是否有可能启动正常活动的意图 BroadcastReceiver只是触发一个新的意图来打开一个服务,它只是显示一个通知 第二站。:与之前相同:BroadcastReceiver,只能启动属于服务的意图

我将遵循以下基本教程:

正如你所看到的,它基本上有以下功能(如果我错了,请纠正我):

  • 一旦启动MainActivity,将为特定日期和时间设置警报
  • 一旦到达此日期和时间,它就开始打算
    MyReceiver.class
第一站。
MyReceiver
正在扩展
BroadcastReceiver
。是否有可能启动正常活动的意图

  • BroadcastReceiver只是触发一个新的意图来打开一个服务,它只是显示一个通知
第二站。:与之前相同:BroadcastReceiver,只能启动属于服务的意图?或者它可以启动正常的活动吗?为什么我还要称之为新的意图?为什么我不能在BroadcastReceiver中完成这项工作(比如通过互联网下载一些内容)

我对服务有点陌生,所以如果我说了一些非常奇怪的话,我很抱歉


非常感谢。

BroadcastReceiver
只是一种在收到广播后做任何事情的方法


服务
不像
活动
那样容易被Android操作系统杀死<代码>服务没有GUI。

BroadcastReceiver
只是一种在接收广播时执行任何操作的方法


服务
不像
活动
那样容易被Android操作系统杀死<代码>服务没有GUI。

广播接收器可以有目的地启动您想要的任何东西(活动、服务)

你不想塞进广播接收器的原因是,它们只在服务运行的地方存在很长时间,直到你告诉它停止为止


如果您正在进行轮询或其他操作,您真的不需要广播接收器,您可以使用报警管理器提供的服务(
IntentService
)。IntentService只有在有事情要做的时候才会运行很长时间,这意味着它会停止自己,这与正常服务不同,正常服务在完成时必须停止它。

BroadcastReceivers可以有目的地启动任何你想要的东西(活动、服务)

你不想塞进广播接收器的原因是,它们只在服务运行的地方存在很长时间,直到你告诉它停止为止

如果您正在进行轮询或其他操作,您真的不需要广播接收器,您可以使用报警管理器提供的服务(
IntentService
)。IntentService只有在有事情要做时才会运行很长时间,这意味着它会自动停止,这与正常服务不同,正常服务在完成时必须停止

为什么我不能在BroadcastReceiver中完成这项工作(比如下载) 网上的一些内容

根据Android文档,广播接收器onReceive方法在主线程上被调用,因此您无法在onReceive中执行下载任务。因为它将冻结UI,并可能在3.0及以上版本中引发异常

如果您想要执行下载,那么最好的办法是在onReceive内部触发IntentService(默认情况下,IntentService在后台线程上运行)

为什么我不能在BroadcastReceiver中完成这项工作(比如下载) 网上的一些内容

根据Android文档,广播接收器onReceive方法在主线程上被调用,因此您无法在onReceive中执行下载任务。因为它将冻结UI,并可能在3.0及以上版本中引发异常


如果您想执行下载,那么最好的办法是在onReceive内部触发IntentService(默认情况下,IntentService在后台线程上运行)。

IntentService与普通Intent相同,它的类扩展了服务,并由
上下文启动。startService(Intent)
?或者可能是某种特殊的服务,完全不同?唯一的区别是它在后台线程上运行,你必须调用HandleContent。哦,那么我肯定要使用IntentService来执行网络操作。IntentService,与它的类扩展服务并由
上下文启动的普通Intent相同。startService(Intent)
?或者可能是某种特殊的服务,这是完全不同的?唯一的区别是它在后台线程上运行,你必须调用HandleContent。哦,那么我肯定要使用IntentService来执行联网操作。