问题标签 [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 投票
3 回答
10738 浏览

android - 如何从 IntentService 创建吐司?它卡在屏幕上

我试图让我的 IntentService 显示一条 Toast 消息,但是当从 onHandleIntent 消息发送它时,toast 显示但卡住了,屏幕也没有离开。我猜是因为 onHandleIntent 方法不会发生在主服务线程上,但是我该如何移动它呢?

有没有人遇到这个问题并解决了?

0 投票
4 回答
13047 浏览

android - IntentService 不会显示 Toast

我创建的这个 IntentService 将在 onStartCommand() 和 onDestroy() 中显示 Toast,但不会在 onHandleIntent() 中显示。我是否遗漏了有关 IntentService 限制的一些信息?

0 投票
2 回答
4229 浏览

android - 向 IntentService 询问有关其队列的信息

我有一个 IntentService 排队需要对我的 Web 服务器进行的 Web 服务调用。因此,每个 Intent 都是要进行的 Web 服务调用。

我想设置一些东西,我的应用程序可以询问这个 IntentService 是否有任何包含特定数据的 Intent(IE:“你是否已经在等待向云询问 x 数据?或者我需要告诉你做吗?”)。

关于如何扩展 IntentService 来做到这一点有什么建议吗?IntentService的Intent队列可以遍历吗?还是我需要获取 IntentService 代码并对其进行更改?

我唯一的另一个想法是向数据库中添加一个表并记录队列中的调用,完成后从表中删除每个日志。

0 投票
5 回答
25715 浏览

android - 在 Android 中下载背景图像时需要帮助吗?

我有一个图像视图,我写了滑动,在滑动的时候,图像是从互联网下载的,所以我想我必须在滑动之前在后台下载图像,对于我需要使用 asynctask 或服务或IntentService,所有这些都将有助于下载和存储在 data/data/mypackages 中,但在我的情况下仍然刷卡会变慢任何想法,也告诉我哪个是最好的,我是否以正确的方式调用

1.异步任务

2. 服务

3. Intent Service如下图,

我很困惑哪一个是正确的方法,因为我的问题还没有解决

这是 asynctask 代码示例片段

}

异步任务代码

这是我的服务

这是 IntentService 代码

从 MyActivity 调用 IntentService

0 投票
1 回答
1051 浏览

android - Android 如何管理 Intentservice 队列?

我有一个带有下载按钮的活动。当我点击它时,服务就会启动。该服务创建一个通知并将其发布在通知栏中。如果我显示通知详细信息,我可以看到一个显示下载状态的进度条。

因为我不知道服务在主线程上运行,有人建议我使用一个可以自己创建工作线程的意图服务。所以一切都很好,我的 gui 在下载过程中没有冻结。

我有一个问题。要使用intentservice,我必须在onHandleIntent 方法中实现下载代码和通知部分。现在我发现意图服务有一种队列,每次管理一次意图。因此,如果我从活动中单击下载按钮两次,它会创建一个新通知,开始下载,然后在完成后再次输入 onHandleIntent,它会创建第二个通知并开始第二次下载。对我来说,背靠背下载文件而不是一起下载文件很好,但至少我希望如果我按两次下载按钮,服务会上传通知说有 2 个下载等待。我无法做到这一点,因为意图服务一次又一次地执行代码............有没有办法解决它?

有没有办法手动处理队列,比如......如果你有另一个意图这样做............更新通知.......然后继续 dirst 下载...... .

另一个问题,考虑到正在另一个线程上工作,意图服务是否可以修改 gui,或者我必须使用处理程序并将消息发送回活动?

最后,线程是在哪里创建的,就在 onCreated 方法之后或 onHandleIntent 内部?

0 投票
2 回答
7762 浏览

android - 使用 ProgressDialog 等待执行的 AsyncTask

我有一个方法public void writeEntry(Activity ctx, Entry entry)可以获取一些数据并且必须调用本机方法,这需要更长的时间才能完成。
所以我创建了一个处理ProgressDialog和本机方法的AsyncTask 。它在自己的Activity中很好地测试它,在那个Activity中我使用了回调接口等等。

就我而言,我有上述方法并且必须执行AsyncTask。执行不能在该方法中,因为它不会停止进一步的执行。
在继续执行之前,我需要本机方法的结果。
是否有可能等待AsyncTask完成?该方法wait()不是一个选项,因为 UI 线程也会等待,因此会失去ProgressDialog的感觉。

我可以使用runOnUiThread()给定参数的方法还是启动自己的Activity的唯一解决方案?

0 投票
1 回答
988 浏览

android - Service 和 IntentService 的位置问题

在我的应用程序中,用户将请求位置更新。发生这种情况时,主要活动将启动一个服务,该服务将启动一个位置请求。

我的问题是,如果服务启动,比如在两分钟内启动 3 次,那么它就无法正常运行。

所以,基本上,我需要该服务暂停启动请求,直到当前启动完全完成。

每次启动我的服务时,最多可能需要十分钟才能完成,并且该服务会根据传递给它的意图数据以不同的方式响应每个启动请求。

我会很高兴(实际上更喜欢)在两分钟内发生的三个启动请求中的每一个都有一个位置请求,但是意图数据可能与三个启动请求中的每一个都不同。

所以,我尝试使用 IntentService 来克服这个问题并一次处理所有三个请求,但是随后

不叫。我知道这可能是由于 onHandleIntent(...) 几乎立即完成并且基本上没有给位置请求时间做出响应。我有一个处理程序,它在 7 分钟后停止位置请求(3 分钟用于测试),然后位置信息被传递给其他将 UI 更新返回给用户的方法。UI 更新返回,它们只是 null 因为位置更新失败。

我想我可以在 IntentService 中使用 onHandleIntent 来启动我的服务并将意图数据传递给它,但这似乎是一种非常糟糕的做法,并且可能有更好的方法来做到这一点。 编辑:这绝对行不通,因为 onHandleIntent 无论如何都会立即启动我的 locationService,所以不会有等待期。

此外,在 onHandleIntent 中调用的任何 Toast 都不会显示,尽管我的 onCreate() 中的所有内容都可以正常工作。

我很难找到任何答案,任何帮助将不胜感激。这是我的代码的要点:

此外,我的位置监听器在 onCreate(); 中实例化。

0 投票
1 回答
2239 浏览

android - IntentService 和 AlarmManager

可能重复:
Android RuntimeException:无法实例化服务

我找不到从 AlarmManager 启动 IntentService 的方法。普通服务很简单(将其添加到清单中,然后将其包装在 Intent 中),但我无法使其与 IntentService 一起使用 - 应用程序不断因“java.lang.RuntimeException:无法实例化服务”而崩溃。IntentService 本身没有任何问题(1 行代码)。有什么帮助吗?

0 投票
2 回答
8579 浏览

android - 仅向特定活动发送广播

我有一个Activity在方法中创建一个带有IntentFilter的BroadcastReceiveronCreate(...)

另一方面是一个IntentService,它将发送一些数据:

但这似乎不起作用。未收到广播。
我的服务类在一个 android lib 中,也许这会带来麻烦。

感谢您的任何建议。

0 投票
0 回答
483 浏览

android - Android intentService,如何跳到队列中的下一个任务?

我有一个调用意图服务的活动。

IntentService 在背景中从互联网下载文件,但我希望能够中止特定的下载......

因此,假设我将 5 个文件放入队列中:文件 1、2、3、4、5

意图服务开始下载数字 1。有没有办法让意图服务中止您在方法句柄事件中正在执行的操作(在这种情况下是下载文件 1)并开始下载下一个?

是否可以从队列中删除元素,例如,在下载文件 1 时,从队列中删除文件 4,以便在数字 3 之后直接进入 5?

肿瘤坏死因子