- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是想阐明我对 IntentService
在达到 terminating 状态后如何由操作系统管理的理解。通过终止,我的意思是当当前 Activity 被销毁或应用程序进程被终止时,根据以下文档: https://developer.android.com/guide/components/activities/activity-lifecycle
鉴于评论
Also, an IntentService isn't affected by most user interface lifecycle events, so it continues to run in circumstances that would shut down an AsyncTask
在 https://developer.android.com/training/run-background-service/create-service ;
我觉得好像:
1) 启动的 IntentService
不受 Activity 生命周期的影响。这是正确的吗?
2) 如果 (1) 为真,即使在达到终止状态后它是否会继续无限期地运行,直到它自己停止或操作系统决定停止它?
在我的特殊情况下,我在应用程序启动期间使用 IntentService
来查询 API、获取内容,然后向 Xamarin 添加新的(着陆)Page
.Forms 导航堆栈(这相当于开始一个新 Activity )。这引出了我的下一个问题......
3) 如果在 IntentService
创建新 Activity 时应用程序已经处于终止状态,会发生什么情况?肯定不能将 Activity 添加到导航堆栈,因为一旦应用程序终止,它就不再存在?
最佳答案
是的,启动的 IntentService
不受 Activity 生命周期的影响。实际上,绑定(bind)服务之外的所有服务都不受 Activity 生命周期的影响。
IntentService
将继续,直到它完成其工作、应用程序被销毁,或者如果系统决定终止 Service
由于更改Android 8.0后台Service规则中。
您对终止状态的使用范围太广...如果应用程序已经终止,则不会发生任何事情,因为 IntentService
也已经终止。如果是启动 IntentService
的 Activity
被终止,那么什么也不会发生,因为默认情况下,IntentService
与 Activity 无关,即使它是开始它的人。
对于最后一个问题,这实际上取决于您选择如何将 IntentService
的结果传递给 Activity
。
如果您使用的是 BroadcastReceiver
,则不会发生任何事情,因为 IntentService
会毫无问题地触发广播,但是 Activity
将无法接收结果,因为它已终止。
但是如果您只是创建一个新的 Activity
,那么您可以简单地使用 startActivity()
并将结果数据添加到 Intent。不过,我怀疑当 Activity
不在您的应用程序中时用户会很高兴看到屏幕上突然打开它们。启动一个新的 Activity
与之前的 Activity
无关,因为 Context
的任何实例都可以启动一个 Activity
。
老实说,根据您的问题,您似乎非常关心 IntentService
并且它与启动它的 Activity
相关。如果是这样的话,你真的不应该使用 IntentService
,因为这不是它的真正目的。它并不意味着与 Activity
有联系。它只是意味着工作和完成。
相反,绑定(bind)的 Service
会是更好的选择,因为它与启动它的 Activity
有直接联系。
关于android - 应用程序进程被杀死后如何管理正在运行的 IntentService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54681617/
我有一个包含很多歌曲的 ListView 。每次点击一首歌曲时,我都会调用一个 IntentService 来按顺序下载这首歌曲。 但有时我想取消下载(例如:第 5 次)。这意味着我需要停止第 5 个
我有这个 IntentService (HttpService),它从网络服务中获取原始 json 数据: public class HttpService extends IntentService
我想将回调传递给 IntentService。这是我当前的代码: 我的回调接口(interface) import android.os.Message; public interface Sampl
在我的 Android 应用程序中,我有一个带有适配器的简单 ListView 。有一个繁重的查询是用数据填充 ListView 。所以我把它放到另一个线程中运行的 IntentService 中。
我只想写一个“Hello World IntentService App”。不幸的是,我无法做到这一点。 问题: MyIntentService.enqueueWork() 方法不起作用。 Inten
我有 5 个 IntentServices,它们在与主 UI 不同的时间和单独的进程中运行。当服务完成时,它们通过 Intent 将数据发送到主进程。我想知道 5 个服务是否占用了我的应用程序过多的内
我正在构建一个应用程序,通知将在特定时间响起,如果无人看管 15 分钟,通知就会消失。当我插入设备并运行代码时它就可以工作。然而,一旦我拔掉设备并运行应用程序,通知就会起作用,但如果无人看管,它不会在
我构建了一个应用程序,它使用 IntentService 来操作应用程序的数据库和调用网络服务。 例子: 我有一个 Activity ,它是一个项目列表。此列表由 CursorAdapter 填充。每
我遇到了一个问题。 IntentService UpdateService02 偶尔会运行失败。我放入了日志条目以便进行调试,这就是我得到的... 02-28 21:37:32.461: Main -
我正在使用 IntentService 执行后台任务,例如从远程服务器更新数据。 在某些情况下,同一个请求可以被用户多次排队,但我只想执行一次(连续两次从服务器更新数据没有意义)。 是否有使用 Int
我正在使用 Android AlarmManger 安排 IntentService 在较小的间隔后运行。 这是我的 AlarmManger: static void setNextSchedule(
我的 IntentService 看起来像这样: public class MusicService extends IntentService{ final static String NA
我遇到了一个奇怪的情况,我构建的对象在方法 onHandleIntent 中返回为 null,我不知道为什么或如何解决它。 我的 Activity @Override protected vo
我搜索了很多,但我不知道如何在单击按钮时停止 IntentService。我有一个启动 IntentService 的按钮,然后 progressDialog 显示通过 ResultReceiver
我正在尝试用 Kotlin 编写一个 CallRecorder 应用程序。我想要做的是开始使用 BroadcastReceiver 启动的服务录制音频。我认为我在 MediaRecorder 初始化方
只是想阐明我对 IntentService 在达到 terminating 状态后如何由操作系统管理的理解。通过终止,我的意思是当当前 Activity 被销毁或应用程序进程被终止时,根据以下文档:
我正在使用 IntentService 访问不同的网络服务方法并更新我的 ContentProvider。我看到的问题是,有时,我向 IntentService 发送了一个新的 Intent,但是 I
我想我明白了 IntentService 类的意义。它处理一个队列,防止太多或更多的服务实例一起执行。 我发现它很有用,但是如果我从 IntentService 派生了太多具有不同用途的类,并且我希望
我有一个 IntentService,它在启动时启动并在后台保持运行。没有启动器 Activity,IntentService 由广播接收器调用。它适用于 2.3.4 和 4.0.4 设备,但不适用于
我编写了一个发送命令行的 IntentService。与我尝试对控制台进行编程的 Activity 有关。该 Activity 的目的是执行“命令提示符”,我可以在其中向服务器发送消息或从服务器接收消
我是一名优秀的程序员,十分优秀!