问题标签 [android-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 回答
56 浏览

android - 用户事件/动作的后台监听器

我需要创建一个在 android 应用程序后台运行的库,并监听和记录用户在移动应用程序中使用的所有操作/事件。

例如:

  1. 如果用户点击特定按钮,图书馆会注意到他点击了它。
  2. 如果用户点击地图,图书馆会记录该事件/手势
  3. 如果用户刷卡,图书馆会注意到用户刷卡...

我的库跟踪应用程序的可用性,我需要某种监听器来记录用户使用的动作/事件。

我在网上找不到任何东西,如何在后台服务中捕获事件。我读到了BroadcastReceiverIntentService不知道我可以在我的图书馆中使用它来解决我的问题。

我可以知道实现目标的正确方法是什么吗?

0 投票
1 回答
169 浏览

android - 两个不同的意图服务可以同时运行吗?操作系统是否在启动第二个意图服务之前等待第一个意图服务停止?

我有两个intentservicesIntentServiceAIntentServiceB

IntentServiceA运行时,如果我调用startService(IntentServiceB),将IntentServiceB同时运行IntentServiceA还是等到IntentServiceA停止?

如果是关于Asynctasks它会是:直到完成AsyncktaskB才会开始。AsynctaskA但是在IntentService.

0 投票
1 回答
1413 浏览

android - 即使清除应用程序,如何保持服务运行?

有没有办法确保服务在启动后继续在后台运行,即使用户从最近屏幕清除应用程序?一个完美的例子是 Pandora 的应用程序,一旦它开始播放,即使你从最近删除它,音乐继续播放并且通知仍然存在。

在我的示例应用程序中,我有一个简单的处理程序,它只记录 500 毫秒的当前时间,以便我可以查看服务是否正在运行,然后我使用 4 个切换之一启动它,每个设置都使其从 4 个服务之一启动启动类型(START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY)。我启动服务,退出应用程序,然后从最近删除它。在每种情况下,服务都会终止并且循环日志记录会停止。

MainActivity.java

录音服务.java

0 投票
2 回答
900 浏览

java - Android:为并发后台作业设计(Service、IntentService 或 AsyncTask?)

我需要帮助设计针对特定于长时间运行的后台任务的问题的解决方案。

背景:

  • 我有一个带有显示文件列表的活动的应用程序。
  • 每个文件都可以下载。每个下载的文件都可以有更新。
  • 更新(如果有)将作为带有立即更新按钮的通知触发。该应用程序有一个显示每个文件更新的活动。
  • 在任一位置单击立即更新会触发后台作业下载文件并在两个位置更新 UI 中的进度(取决于用户所在的位置)。
  • 用户可以同时更新/下载最多 4 个文件。

设计:

  • 我有一个带有 WakefulBroadcastReceiver 的 GCM 设置,它启动一个 IntentService 来通知任何更新。
  • 更新/下载是一个 Runnable - DownloadRunnable.java
  • 一个单例类,MyDownloadManager 有一个静态方法 startDownload(),它使用特定的 url 启动 DownloadRunnable。

问题:

  • 下载更新时如何更新通知和活动的进度?
  • 如何扩展设计以运行并发下载并更新相应项目的进度?
0 投票
1 回答
389 浏览

android - Android手动启动ActivityRecognition

我的 Android 应用程序需要检测当前的活动(跑步、步行等)。

我按照 Android 开发页面上的说明进行操作:http: //developer.android.com/reference/com/google/android/gms/location/ActivityRecognitionClient.html

在我的意图服务中:

这是我的问题:我想自己开始活动识别。Android Dev Page 中的代码似乎应该这样做。但是,如果我不将该服务添加到 AndroidManifest,它不会做任何事情。onConnected() 方法被调用,但不是 onHandleIntent()。

所以我想我可能只需要将它添加到清单中。现在我确实收到了活动,但我一直收到它们。这也不是我想要的。我究竟做错了什么?

在此先感谢, 斯特夫

0 投票
1 回答
1780 浏览

android - 如何启动我的 IntentService 的特定方法?

(1) 从一个活动中,我可以调用我的 IntentService 的特定方法(动作)吗?使用下面的示例代码,我想只调用 ACTION_BAZ:

(2) 根据我的活动,我可以/应该打电话吗?

但是,如果我没有使用 (1) 的 IntentService 的方法(操作)中指定的参数 param1 和 param2 调用该方法,会不会有问题?

(3) 最后,在Google (deveoper.android.com)提供的示例代码中,我的 IntentService 是否总是按顺序启动方法(操作)Foo 和 Baz?如果我完全离开,请纠正我的理解......


我的意思是调用 myIntentService 作为后台服务来执行不会延迟 UI 的数据库功能。我可能有

  • ActionFoo 填充我的 MainActivity 从资产 .csv 文件创建的表。

  • 在我的 MainActivity 的 onUpgrade 调用中,ActionBaz 可以删除上述表格。

  • 用户仍然可以在用户定义的表中手动输入数据,而后台可以处理资产填充的表。

所以我的第三个问题是:对 myIntentService 的所有调用都会执行 ActionFoo(填充表)和 ActionBaz(从而删除我刚刚创建的表)吗?还是我的 onHandleIntent 会确保仅对指定的 Action(添加到意图)进行操作?

如果我必须在我的 Activity 中明确提及意图的 setAction 和参数,我的 IntentService 的辅助方法(即 startActionFoo)有什么帮助?无论如何,它们都必须重新定义到调用活动中。

0 投票
1 回答
858 浏览

android - onReceive 方法没有被调用

我尝试使用 将广播从服务发送到活动IntentService,为此我使用了以下代码:

然后我在 Activity 类中定义我的接收器,例如:

我用过registerReceiverinonResumeunregisterReceiverinonPause方法

但是该onReceive方法没有被调用,

我已使用本网站的第 7 部分

我错过了什么?

编辑

我有任何替代解决方案吗?我尝试通知服务活动以更新数据。

0 投票
2 回答
1117 浏览

android - 从 IntentService 更新片段

我正在处理的应用程序有一个包含三个片段的活动。每个片段都需要显示一些从 IntentService 接收到的数据。

片段 1 - 图标、名称和描述 片段 2 - 文章列表 片段 3 - 项目列表

我将这些数据从我的接收器推送到我的片段的最佳方式是什么,或者我以错误的方式接近这个?我没有使用 AsyncTasks 是因为我想将我的服务与上下文分离,或者那是错误的决定?

0 投票
1 回答
455 浏览

android - Android 在 IntentService 中创建 Intent

我对 Android 很陌生,我一直在努力解决我认为可能是一个微不足道的问题——我已经查看了教程和其他 StackOverflow 问题,但无济于事。

我正在尝试在 IntentService 内部创建一个 Intent,但在下面的行标记 ERROR 上不断获得 NullPointerException(在 sendNotification 方法中)。

我已经尝试过:

Intent intent = new Intent(getApplicationContext(), TestActivity.class);

Intent intent = new Intent(this, TestActivity.class);

Intent intent = new Intent(SQLHealthService.this, TestActivity.class);

无济于事,在尝试创建 Intent 时总是产生空指针异常。

编辑:为了清楚起见,我应该提到我想要完成的事情。我正在尝试使用 AlarmManager 让应用程序每 10 分钟“唤醒”一次,调用 REST Web 服务,然后在满足某些条件时发送通知。

调用 SQLHealthService

0 投票
2 回答
1597 浏览

android - Android - 注册/注销广播接收器的最佳位置?

我知道已经有很多关于这个主题的问题,但我没有找到任何与我的问题完全匹配的问题。

情景

Button我的其中有一个Fragment,单击时会启动一个IntentService并显示一个ProgressBar. IntentService进行网络调用,通常需要 5-10 秒,然后是sendBroadcast(). 我删除了实现已注册和未注册的ProgressBarinonReceive()方法FragmentBroadcastReceiveronResume()onPause()

问题

假设用户按下ButtonIntentService启动。在IntentService发送广播之前,用户会做一些事情,比如打开设置屏幕。现在我的片段在onStop(). 如果IntentService现在发送广播,我Fragment会错过它,当用户返回时,他会收到一个永无止境的问候ProgressBar

我无法将注册/取消注册移动到onStart()/ onStop(),因为打开设置屏幕调用onStop()并且仍然会错过广播。

这给我留下了onCreate()/ onDestroy()。但是文件说不能保证onDestroy()可以调用。所以我对我应该在哪里进行注册/注销感到有点迷茫。

有什么建议么?