问题标签 [intentservice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
547 浏览

android - Android 设计:如何在后台运行 3 个不同的线程来监控 3 个不同的设备

我有一个应用程序,我想从 Android 手机监控 3 个蓝牙设备的状态。为此,我需要向每个设备发送一些数据,并每 5 秒检查一次它们的响应是否正确。而且我希望即使应用程序不在前台也能进行此处理。我想到了不同的解决方案,但我想不出任何好的解决方案。

  • 我想到了使用 IntentService。但是 IntentService 使用一个线程来完成所有处理。但我想要 3 个不同的线程,因为每次检查之间的 5 秒时间很短,我无法在单个线程中检查设备之间跳转。

  • 我想过使用 3 种不同的 IntentServices。但不确定,如果它是最好的方法吗?

  • 我想使用一个服务并产生 3 个线程,一个 foreach 设备。但是我不确定当应用程序不在前台时这些线程是否会运行。

    运行这种在应用程序中进行后台处理的应用程序的最佳设计是什么,即使应用程序不在前台并且它必须运行 3 个不同的线程。

0 投票
2 回答
123 浏览

android - 从服务更新内存模型

我计划编写一个 IntentService 来下载新包(应用程序的新项目)。我唯一的问题是,当我广播下载结束时,如果应用程序正在运行,我必须更新内存模型。如果它没有运行,则无需执行任何操作,因为应用程序将在启动时从数据库创建内存模型。在性能方面,UI 是从内存中工作的,而不是从数据库中工作的。知道我应该如何接近,还是我完全走错了路?

编辑:为了清楚起见:假设我有 MyIntentService,它将新行插入到我的数据库中,然后触发由 MyBroadcastReceiver 接收的 BroadcastIntent。现在我面临的问题是,MyBroadcastReceiver 的实例应该以某种方式通知 Model 类,它是一个单例。问题是,这个模型(单例)实例只有在我的应用程序正在运行时才应该可用,因为它只被 UI 使用(只使用 DB 会很慢)。如果没有 UI 可以使用它,则无需通知我的模型实例。我不能让我的模型成为广播接收器,因为它们随时都会启动,而且它们也不能是单例的(据我所知)。

0 投票
4 回答
9602 浏览

android - IntentService 可以无限期运行吗?

根据我的理解,当当前请求完成时,IntentService 将停止。

考虑以下场景,我将每 100 毫秒触发一次对 IntentSerivce 的请求,并且该请求的处理时间为 90 毫秒。

因此,对于我的每个请求 - startSerivce 调用,将调用服务,并且在 90 毫秒后(一旦处理完成),将调用 IntentServicee 的 onDestroy。

我想让这个 IntentServicee 运行直到我说停止。那可能吗?

假设我将在我的服务中执行以下操作

  1. 进行配置
  2. 发送一些请求
  3. 等待回复
  4. 阅读回复
  5. 广播到调用的活动

步骤 1 对于我的所有请求都是常见的,所以我认为我可以在服务最初启动一次时执行它们,然后根据请求在 HandleIntent 中执行 3-6。

0 投票
3 回答
4790 浏览

android - IntentService:如何正确入队?

在我的代码中,我使用 anIntentService来收听位置更新(GPS 或网络更新),并且IntentService在收到事件时触发,因此它startService()从任何活动开始。

现在我的问题是:当两个事件启动它IntentService并且第二个事件启动它而第一个事件仍在请求更新时,我希望第二个事件等待第一个事件完全完成(找到位置或计时器线程完成)。但是,每当IntentService第二次执行(第一个实例仍在运行)时,它都会打印日志并按照并行执行的方式执行。

但是我认为它的主要目标IntentService是它是顺序的,所以第二个意图必须等到第一个意图完成......

我是不是误会了什么?

0 投票
2 回答
5025 浏览

android - 从 Service (IntentService) 和 Activity 执行的 AsyncTask - 有区别吗?

从 Activity 或 IntentService 启动 AsyncSync 之间有什么区别吗?

我正在构建一个通过 http 下载和上传文件的应用程序。我为每次传输使用带有进度条的自定义通知布局。我选择并行传输或将它们放入队列中(您会推荐哪个选项?)。

对于带有队列的选项,我使用 IntentService,因此 Android 框架会为我将任务放入队列中。为了让它们并行,我使用 AsyncTasks。但是我从 IntentService 启动它们(也可以是 Service) - 这样做有什么意义吗?IntentService 在执行 AsyncTask 后立即终止,因此 AsyncTask 在没有任何“父级”的情况下运行。

如果我从 Activity 启动了那些 AsyncTask,转到主屏幕并且系统决定关闭这个 Activity 怎么办?它可以做到吗?AsyncTask 会存活下来吗?

这种情况下的首选方法是什么?

0 投票
4 回答
5408 浏览

android - 如何检查 IntentService 是否已启动

我想知道一个 Activity 是否成功启动了一个IntentService.

由于可以绑定IntentService通孔bindService()以使其保持运行,因此一种方法可能是检查调用是否startService(intent)导致调用服务对象onStartCommand(..)onHandleIntent(..)在服务对象中。

但是我怎样才能在活动中检查呢?

0 投票
2 回答
83199 浏览

android - Android Manifest 中如何声明 Intent 服务?

直截了当的问题:

IntentService 是在 Android Manifest 中声明为常规服务,还是有其他方法?它试图搜索它,但我找不到答案。

这是常规的服务声明:

谢谢

0 投票
3 回答
4003 浏览

android - 停止 IntentService

有谁知道是否有办法停止 IntentService 而无需完成其工作线程并自行停止?

简单的问题,但我在文档中找不到答案。有没有简单的方法来阻止它?

谢谢

0 投票
3 回答
14678 浏览

android - 从 IntentService 或 AsyncTask 调用 REST API?

想象一个典型的场景,一个活动打开,需要调用一个 REST HTTP API 来获取一些内容,并且一旦收到更新 UI。显然 API 调用需要在单独的线程上进行,但应该使用 AsyncTask、IntentService 还是其他方法来完成,为什么?

0 投票
1 回答
1806 浏览

android - 停止 LocationListener 服务的问题

我有一个实现 LocationListener 的 IntentService。它在我的应用程序运行时运行,并在我的应用程序关闭时被销毁。在其 onHandleIntent 方法中,我得到一个 LocationManager 并注册服务表单位置更新。在其 onDestroy 方法中,我调用:

但是,这有时会导致 NullPointerException:

如果我删除该行,NullPointerException 就会消失,但是当我关闭我的应用程序时 LocationListener 不会停止。有什么想法可以解决这个问题吗?