我应该在哪里使用Service,AsyncTask和Broadcast Receiver?

时间:2012-05-21 11:43:00

标签: android service android-asynctask broadcastreceiver

我有点困惑,在什么情况下我需要使用Service,asyncTask和Broadcast Receiver等应用程序组件。

任何人都可以解释这些与我需要使用这些组件之间的确切区别吗?

5 个答案:

答案 0 :(得分:7)

AsyncTask是一种创建新线程的友好方式,可以异步执行某些工作。

广播接收器类似于系统事件的事件处理程序。它可以运行 背景并在发生某些事情时执行操作,例如关闭手机或打开wifi ..

服务只是一个在后台运行的应用程序(如守护程序),可以向应用程序提供信息或只执行任务。

对不起我的英语,我试着让我明白,但这不是我的母语

答案 1 :(得分:4)

到目前为止,我将直接到达我在项目中应用这三个的地方:

1.服务:你想在后台执行而没有任何用户交互的东西。例如,连续获取位置数据或连续向服务器发送一些数据。你也可以使用服务每隔几个时间单位执行任务。例如发送十分钟后台更新。

2.AsyncTask:创建一个新的执行线程。到目前为止我遇到的最好的用途是调用一个Web服务..我使用AsyncTask进行Web服务调用 1.在onPreExecute()中显示进度条 2.在doInBackground中执行我的Web服务调用(参数...) 3.在onPostExecute(Result)中更新UI或使用来自Web服务的响应执行其他操作。

3.BroadCastRecievers就像你的应用程序的全球接收器。他们可以监听你的应用程序中的电话重启或自定义事件等系统事件。我在电话重启时用它们启动服务,当我们停止时,它停止了关掉了电话。

答案 2 :(得分:2)

让我用一个用例来解释,让你更好地理解它 -

  1. AsyncTask - 想从服务器获取内容,或者将某些内容发布到服务器上?如果我们在主线程上执行此操作,则用户将无法与该应用程序进行交互。因此使用了Asynctask,它在不同的线程中执行网络活动。

  2. 服务 - 想在后台管理某些内容?就像每隔10分钟或1小时获取用户的位置一样,或者在用户根据位置穿越特定区域时提醒用户。即使应用程序未打开(用户可能正在执行其他操作,或手机已锁定,服务仍在后台运行),该服务也会使应用程序运行。

  3. 广播接收器 - 假设您正在跟踪位置并在本地存储(当互联网关闭时)。不是在互联网启动时,你想发送所有这些。因此,您在操作系统中注册,您想要监听该特定事件,并获得控制权。 或者当您希望服务器知道设备重新启动时,我们只需要实现它。

  4. 清除?

答案 3 :(得分:1)

服务及其本地内存变量被加载到内存中并始终运行

只有在处理事件时,BroadCast接收器才能保证在内存中运行。

如果内存不足,操作系统可以从内存中删除Broadcastreceiver。

答案 4 :(得分:1)

“服务”是在后台运行的组件,不与用户交互。每个开发人员都可以在他的应用程服务支持Android的真正多任务处理,因为它们可以在自己的进程中运行。

“AsyncTask”封装了线程和处理程序的创建。 AsyncTask通过execute()方法启动.cute()方法调用doInBackground()和onPostExecute()方法。 主要目的是在没有用户交互的情况下下载内容。

“广播接收器”是一个扩展BroadcastReceiver的类,它通过AndroidManifest.xml文件(或通过代码)在Android应用程序中注册为接收器。您可以通过Context.registerReceiver()方法动态注册BroadcastReceiver 。 BroadcastReceiver类定义onReceive()方法。只有在这种方法中你的BroadcastReceiver对象才有效,之后Android系统才能回收 广播接收器。