问题标签 [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.
android - 手动结束 IntentService 工作线程
我在手动结束 IntentService onHandleIntent 方法时遇到了一些麻烦。我正在捕获一个异常,这对线程的其余部分的执行至关重要,我想在捕获异常时停止线程。我尝试调用 stopSelf() 或直接调用 onDestroy() ,我敢肯定这可能是非常糟糕的方法,而且它们不起作用。线程调用它们然后继续。
有人对如何做到这一点有任何好主意吗?
android - 使用 Eclair 2.1 对 IntentService 的权限
我正在 Android 上编写两个应用程序,它使用权限机制来强制对调用者进行限制。
它们在 Froyo 2.2 或更高版本上完美运行,但不适用于 Eclair 2.1。
第一个应用程序(调用者)在 Manifest<uses-permission ... />
中,第二个(被调用者)定义了一个新的权限<permission .... />
。
有人对 Eclair 2.1 有同样的问题吗?
我正在使用仅 2.1 的模拟器(带有 google api 的 2.1-update1 和 2.1update1)进行测试。
这是来自 logcat 的错误:
当我安装 apk 时,与 Froyo 不同,没有关于新权限的日志。
应用程序清单是:
Pkg1(调用者)
包2
在服务定义中:
我已经测试了 protectionLevel 值:正常、签名和危险。谢谢。
android - 如何取消Service/IntentService/AsyncTask/Looper
我要疯了。我想要一件简单的事情——我有一个很长的任务(从网络上获取几个数据对象)并且我想要取消它的能力。我尝试了很多东西(很多)但没有任何效果
流程是这样的:
用户点击一个按钮
我开始工作(我尝试使用
AsyncTask
、Service
和)IntentService
Looper
该任务负责处理所有事情,包括为进度更新添加持续通知
通知中的意图调用了一个新活动,她的唯一目的是取消正在进行的任务
在 cancelActivity 我尝试调用
stopService()
Service/IntentService 或Looper.quit()
为 Looper 做(我不记得我为 AsyncTask 尝试了什么,不确定是否有这样的 api 用于取消它)
在我看来,最好的选择是使用IntentService
(我可以有几个任务排队,IntetService 会按照我想要的顺序执行)但我愿意接受任何类型的实施建议——我不在乎什么代码将是,只是我可以选择取消任务
预先感谢您的帮助
德罗
(我要睡觉了——在同一个问题上花 8 个小时实在太多了)
android - 在 onHandleIntent 之前捕获 IntentService Intent
我有一个 IntentService 排队要进行的 Web 服务调用。我将一个整数作为 Extra 传递给每个 Intent,它定义了要进行的 Web 服务调用的类型。
我想创建一种情况,如果将执行特定 Web 服务的 Intent 传递给 IntentService,并且 IntentService 队列中已经存在同一 Web 服务的 Intent,则不会处理 Intent。理想情况下,我会丢弃 Intent,但我也可以在其中添加一个 Extra,让代码知道在处理后跳过 Intent。当 Intents 进入时,我可以在我添加到 IntentService 的某个对象中跟踪哪些在队列中。
但是,当 Intent 传递给 IntentService 时,我没有看到拦截 Intent 的地方。据我所知,我只能在调用 onHandleIntent 时触摸它,那为时已晚。
有任何想法吗?
android - IntentService 生命周期
我有一个 IntentService 处理对 Drupal 服务模块的异步调用。目前,我每次都在 onHandleIntent 中初始化我的 DrupalXmlRpcService 对象,因为我的印象是该服务将在线程完成后被终止。该对象是否应该在 IntentService 对象的构造函数中初始化?
android - Android如何检查意图服务是否仍在运行或已停止运行
我需要知道队列中的所有意图服务是否都已“使用”,或者另一种方法是确定它是否仍在执行某些操作,以便在所有服务停止运行之前我不会继续。有任何想法吗?
android - 如何使用 Notification.deleteIntent
我正在尝试检测我的通知何时被清除。我的问题直接指的是这个答案,它概述了我应该做什么。这就是我执行这些操作的方式:
这是 CleanUpIntent 类:
之后,我像往常一样简单地启动通知,但是当我去测试它时(按“清除所有通知”),什么也没有发生。我插入了一行代码,在 IntentService 启动时向 LogCat 打印一些内容,但没有运行任何内容。这就是我想使用 Notification.deleteIntent 的方式吗?
android - 广播、内容提供者和内容接收者的最佳实践
好的,我会说我是 Android 新手。我做了一些小项目,玩了一些东西,做了很多阅读。所以这是我要完成的任务:
我有一个在手机前台运行的远程服务,可以通过 wifi 网络与其他 android 设备发送和接收信息。为使用此服务而构建的手机上的 APK 包含多个 SQLite DB。我希望这些 APK 在服务中注册内容提供者,以便服务始终知道将接收到的数据放在哪里(我已经完成了这项任务)。当数据进入时,我将确定它属于哪里并将其放置在正确的数据库中(这里没问题)。那么,通知正确活动已收到新数据的最佳方式是什么。我是否注册广播接收器以供我的服务调用?如果 APK 已被操作系统杀死,广播接收器会工作吗?一旦加载了正确的活动,我会使用内容观察器来显示新数据吗?我为什么要使用 IntentServices?
我很抱歉问了这么多问题。就像我说的我学得很快,但是 Android 的 SKD 很大,而且有很多很酷的东西。我想确保我通过最佳实践正确地思考问题,并使其非常易于维护和扩展。感谢我能得到的任何帮助或建议。
android - Android:如何在无限循环中正确管理顺序线程
我在IntentService
里面创建了无限循环,onHandleIntent
然后添加静态方法开始、恢复、暂停、停止以在我的活动中直接调用它。
场景是,在无限循环中,我正在调用回调方法,该方法正在创建一个新线程来执行长进程。
问题是,我担心由于无限循环而不断创建线程。我很确定有更好的方法来管理它。我正在考虑 ThreadPool 或其他能够以顺序方式仅使用一个线程的东西。因此,我节省了时间、内存、开销等。
其他方法非常受欢迎。根据需要向我询问其他信息。然后,我会在这里更新。
这是我的代码(看看 SampleCallback):
意向服务
示例回调
UPDATES1 我正在使用除 google api 之外的位置 api。我将创建一个 android 库项目并使用该 api 在后台获取最新位置(例如每 2 秒)。
在应用端,只需要调用静态方法就可以使用它(例如start(context, callback), pause(), resume(), stop())。它具有获取位置的回调。从位置对象获取所需信息后,我将创建一个新线程来调用我自己创建的回调(由应用程序端实现)。
android - 获取 IntentService 的进度
我正在开发一个需要大量 API 调用的 Android 应用程序。我已经构建了一个基于 IntentService 实现排队系统的系统。问题是,我想在 IntentService 运行时显示准确的 ProgressBar 更新。
一种方法是将排队系统更改为一系列 AsyncTask。我将不得不使用onProgressUpdate()
.
另一种方法是调整 IntentService 并从后台线程获取进度。
问题是,我想结合 IntentService 和 AsyncTask 好的特性:制作一个可以轻松处理 UI 事件的排队系统。有没有最好的方法来实现它?
编辑: 我最终使用了 AsyncTasks 而不是 IntentServices。但是,如果有人有一个很好的模式可以分享来更新 IntentService 的进度,请随时添加您的评论。