当我停止我的应用程序后,IntentService 将被终止

2024-04-30

我指的是android 设计注意事项:AsyncTask 与 Service(IntentService?) https://stackoverflow.com/questions/3817272/android-design-considerations-asynctask-vs-service-intentservice

根据讨论,AsyncTask 不适合,因为它与您的 Activity 紧密“绑定”

所以,我启动了一个Thread(我假设 AsyncTask 和 Thread 属于同一类别),其中有一个无限运行循环并进行了以下测试。

  • I quit我的应用程序,按住后退软键,直到看到主屏幕。线程仍在运行。
  • I kill我的申请,前往管理应用程序 -> 应用程序 -> 强制停止。线程已停止。

所以,我期望在我改变之后Thread to Service, my Service即使在我之后也会继续活着quit or kill我的应用程序。


Intent intent = new Intent(this, SyncWithCloudService.class);
startService(intent);

public class SyncWithCloudService extends IntentService {
    public SyncWithCloudService() {
        super("SyncWithCloudService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        int i = 0;
        while (true) {
            Log.i("CHEOK", "Service i is " + (i++));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Log.i("CHEOK", "", ex);
            }
        }
    }
}

    // Doesn't matter whether I use "android:process" or not.
    <service 
        android:name="com.xxx.xml.SyncWithCloudService" 
        android:process=".my_process" >
    </service>

然而,我的发现是,

  • I quit我的应用程序,按住后退软键,直到看到主屏幕。服务仍在运行。
  • I kill我的申请,前往管理应用程序 -> 应用程序 -> 强制停止。服务已停止。

看来,的行为Service and Thread是相同的。那么,为什么我应该使用Service代替Thread?我有什么遗漏的吗?我以为我的Service即使我终止了我的应用程序,仍想继续运行吗?


没有。当您终止应用程序时,服务将停止运行。当您终止应用程序时,它的所有组件都会被终止(活动、服务等)。

一般来说,Thread 和 Service 的行为是相似的。但是,如果您从 Activity 启动一个线程,然后关闭该 Activity(即:退出您的应用程序),最终 Android 会注意到您的进程中没有活动组件(因为 Android 不会将您的线程识别为活动组件)它只会杀死你的进程,从而杀死线程。

但是,如果您有一个服务正在运行,那么 Android 会注意到您有一个服务正在运行,并且不会轻易杀死它。然而,如果你的服务进程没有“使用中”,Android 仍然有可能会终止它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我停止我的应用程序后,IntentService 将被终止 的相关文章

随机推荐

  • jquery检测哪个按钮提交了表单

    我有一个包含以下内容的表格
  • 在 Windows 7 x64 上的任何源中均找不到 linecache19-0.5.13

    我安装了 Ruby 如果我运行 ruby v I see ruby 1 9 3p125 2012 02 16 i386 mingw32 如果我在我的应用程序目录中运行 rails server output 31mCould not fin
  • 在python中查找文件

    我有一个文件可能位于每个用户计算机上的不同位置 有没有办法实现文件的搜索 我可以传递文件名和目录树进行搜索的方法吗 os walk http docs python org library os html os walk就是答案 这将找到第
  • “找不到模块的声明文件”,typeRoots 文件夹中的自定义声明文件被忽略

    您好 我遇到了 TypeScript 问题 我有以下目录结构 package json 顶级项目 node modules 所有已安装的库 tsconfig json build a generated folder index js 处理
  • 如何使用 Pear Text_wiki

    pear 网站上的文档链接到无法访问的网站 有谁知道可以解释如何使用 Text wiki 包的网站 文章或书籍 mario 的回答虽然简短 但很准确 我也因缺乏 让我们快速入门 文档而感到沮丧 并花了一些时间与源代码进行交流 诚然 这绝不是
  • 与 -webkit-filter 战斗:模糊而不是实心边缘(与过滤器一起使用:模糊)

    我写了这支笔 http codepen io anon pen ByZPxw EDIT 请参阅 Alexander Omara 的这支钢笔 了解我的钢笔的较短版本 http codepen io anon pen rawrog 基本上我们设
  • 将 Java 8 Lambda 函数转换为 Java 7

    嘿 我是编码新手 我已经掌握了 Java 8 的 Lambda 函数 但我正在尝试将我为学校项目编写的一些代码转换为 Java 7 但我无法理解关于如何使这段代码在功能上相同 但在 java 7 中 很抱歉 如果这是一个愚蠢的问题 但我似乎
  • 如何使用Python内置的map和reduce函数计算字符串中的字母频率

    我想使用Python的map和reduce内置函数来计算字符串中字母的频率 谁能提供一些关于我如何做到这一点的见解 到目前为止我所得到的 s the quick brown fox jumped over the lazy dog Map
  • CSS 列,从上到下然后从左到右

    我正在为应用程序构建报纸风格的布局 我的页面分为 8 列 各列应先垂直填充 然后水平填充 如果没有足够的内容来填充页面 则列仍应首先垂直填充 在页面右侧留下空白 目前 它们首先水平填充 在内容下方留下空白 我已经尝试过使用 CSS 列 但它
  • 如何使用 ActiveRecord 获取查询结果中的行和列?

    有没有办法使用 ActiveRecord 执行自定义 SQL 查询并让它返回一个数组数组 其中第一行是列名称 后面的每一行是行数据 我想执行类似的事情 connection select rows with headers SELECT i
  • Edge 中的 Javascript 仅适用于打开的 devtools

    我遇到的问题是 在 MS Edge 中 我的图像映射功能只能部分工作 它由淘汰赛 FW 提供动力 在更大的图像映射上 它不会将整个图像映射注册到视图模型中 因此 图像映射的所有悬停效果和单击样式都会停止工作 然而 这只是大图像地图的问题 还
  • 上传太大文件时显示有意义的错误

    我们对网站上上传的文件大小设置了固定限制 低于默认的 asp net 和 iis 设置的大小 我在 Application BeginRequest 中有一个简单的 catch 设置来捕获这个 它不是 excat 因为它检查 Content
  • Java applet - 以 png 格式保存图像

    我正在创建一个用于制作头像的简单小程序 您可以选择脸部 头发 眼睛等 然后将其作为 png 文件保存到光盘上 简单版本 为了简单起见 没有界面 如下所示 import java awt import java applet import j
  • 使用 Rijndael 加密/解密文件

    我需要传输 xml 文件 并且需要对它们进行加密 我发现一些例子认为我已经接近了 但是当我解密文件时 我最终得到了尾随垃圾字符 有一些关于此的帖子 但我还没有看到任何能真正有帮助的帖子 这是加密和解密代码 private void Encr
  • 检查窗口是否已经打开 window.open

    我有一个 html 页面 在我调用的页面正文中onload调用 javascript 函数打开弹出窗口的事件 这是代码 var newWindow null function launchApplication if newWindow n
  • 如何在matlab中绘制彩色一维直方图

    我有一个一维数组 X 其中包含相关系数的统计数据 我想绘制一个彩色直方图 我使用以下代码 histogram X 10 它可以创建具有单色的直方图 现在我想绘制一个直方图 其中每个条形都有不同的颜色 但 FaceColor 选项只能调整整个
  • 使用线程和 ruby​​ mechanize 安全吗?

    有没有人见过很多这样的错误 Exception Net HTTPBadResponse at usr lib ruby 1 8 net http rb 2022 wrong status line SOME HTML CODE HERE 何
  • 为什么需要在父子组件中多次导入React?

    如果您有已导入的父组件文件React 为什么它的任何渲染的子文件也需要导入 React 这是否只是一种安全措施 以防这些子项被渲染到尚未导入 React 的其他地方 In nodejs每个文件都是一个模块 有自己的变量范围 当您将变量导入文
  • 如何通过服务帐户使用 Terraform `google_app_engine_domain_mapping`?

    我正在尝试使用以下配置通过 Terraform 创建 GCP App Engine 域映射 provider google version 3 36 0 region var region resource google app engin
  • 当我停止我的应用程序后,IntentService 将被终止

    我指的是android 设计注意事项 AsyncTask 与 Service IntentService https stackoverflow com questions 3817272 android design considerat