【问题标题】:Where I should use Service , AsyncTask and Broadcast Receiver?我应该在哪里使用 Service 、 AsyncTask 和 Broadcast Receiver?
【发布时间】:2012-05-21 11:42:59
【问题描述】:

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

谁能解释一下它们之间的确切区别以及我需要在哪里使用这些组件?

【问题讨论】:

    标签: android service android-asynctask broadcastreceiver


    【解决方案1】:

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

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

    Service 只是一个在后台运行的应用程序(如守护程序)并为应用程序提供信息或仅执行任务。

    对不起我的英语,我试着让我理解但它不是我的母语

    【讨论】:

    • 不要到处道歉,我们已经看到了更糟糕的情况。
    • 技术上广播接收器不会在后台运行。它们就像回调,由操作系统调用
    【解决方案2】:

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

    1.Service:您希望在后台执行的操作,无需任何用户交互。例如连续获取位置数据或连续向您的服务器发送一些数据。您还可以使用服务每隔几个时间单位执行任务。例如发送十分钟的后台更新。

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

    3.BroadCastRecievers 就像您的应用程序的全局接收器。它们可以侦听系统事件(例如手机重启)或您应用程序中的自定义事件。我用它们在手机重启时启动服务,当我们重新启动时停止服务关掉手机。

    【讨论】:

      【解决方案3】:

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

      1. AsyncTask - 想要从服务器获取一些东西,或者向服务器发布一些东西?如果我们在主线程上这样做,用户将无法与应用程序交互。因此使用了 Asynctask,它在不同的线程中执行网络活动。

      2. 服务 - 想要在后台管理某些内容?比如每 10 分钟或 1 小时获取一次用户的位置,或者在用户穿越特定区域时根据位置提醒用户。即使应用没有打开,Service 也会让应用运行(用户可能在做其他事情,或者手机被锁定,Service 仍然在后台运行)。

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

      清除?

      【讨论】:

        【解决方案4】:

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

        广播接收器只保证在内存中并在处理事件时运行。

        如果内存不足,操作系统可以从内存中删除广播接收器。

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            猜你喜欢
            • 2011-03-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-07
            • 2011-06-01
            相关资源
            最近更新 更多