RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 875781
Accepted
Ksenia
Ksenia
Asked:2020-08-31 18:44:14 +0000 UTC2020-08-31 18:44:14 +0000 UTC 2020-08-31 18:44:14 +0000 UTC

前台进程服务和可见进程的区别

  • 772

前台进程服务和可见进程服务有什么区别?

文档说:

如果满足以下任何条件,则进程被视为前台进程:

...

它包含与用户正在与之交互的操作相关联的服务。

它包含一个“在前台”运行的服务,一个名为 startForeground() 的服务。

它包含一个执行生命周期回调(onCreate()、onStart() 或 onDestroy())之一的服务。

...

和

如果满足以下任何条件,则认为进程可见:

...

它包含与可见或前台活动相关的服务。

我不清楚这些服务之间有什么区别,tk。为了使进程被认为是可见的,该服务必须与“可见活动(1)或前台活动(2)”相关联,但即使对于前台进程,它也被写入“它包含与活动,用户与之交互”(它 = 1?)或“在前台运行”(它 = 2?)。这不是一回事吗?

android
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    ZigZag
    2020-09-01T00:55:41Z2020-09-01T00:55:41Z

    事实上,尽管翻译已发布在官方网站上,但它的可读性极差。此外,一般来说,理解前台进程和可见进程概念的含义是相当有问题的。我将尝试展示我对这部分文档的翻译版本,并添加少量内容。

    前台进程是用户当前活动所需的进程。各种应用程序组件(Activity、Service、BroadcastReceiver)可以导致它们的包含进程被视为前台进程。如果满足以下任何条件,则进程被视为前台进程:

    • 它包含用户正在与之交互的 Activity(调用了 Activity 的 onResume() 方法,即 Activity 是可见的并且在前台);
    • 它包含当前正在运行的 BroadcastReceiver,即 onReceive() 方法被执行。广播接收器仅在此方法运行时处于活动状态。当前正在执行 BroadcastReceiver 的进程,即 onReceive() 回调方法中当前正在执行的代码,被系统假定为前台进程,除非系统内存不足,否则将保持活动状态。当程序从 onReceive() 方法返回时,接收器变为非活动状态,系统假定 BroadcastReceiver 对象已完成。具有活动广播接收器的进程受到保护,不会被系统杀死。但是,包含非活动组件的进程可能会在任何时候被系统杀死
    • 它包含一个执行生命周期回调(onCreate()、onStart() 或 onDestroy())之一的服务。尽管Service中没有onStart()方法,但总的来说,我们说的是它从创建到销毁都属于前台进程。注意力! 例外情况是使用 Service.startForeground() 方法启动服务时,在这种情况下,它指的是可见进程。

    通常只有几个前台进程同时运行。它们仅作为最后的手段被销毁,如果剩下的内存太少以至于它们无法继续一起工作。通常此时设备已经进入内存分页状态,所以为了让用户界面能够响应用户动作,需要移除一些前台进程,需要注意的是,理论上所有可见的进程应该已经至此完成。

    可见进程是不包含应用程序组件的进程,这些应用程序组件会使其成为前台进程,但会影响屏幕上的显示。如果满足以下任何条件,则认为进程可见:

    • 它包含一个不在前台但对用户可见的 Activity(调用 onPause() 方法)。例如,如果从 Activity 启动了一个允许您查看其背后的 Activity 的对话框,则可能会发生这种情况;
    • 它包含一个使用 Service.startForeground() 方法启动的服务(即,它是用户主动了解的服务)。以这种方式启动的服务应在状态栏中显示通知,该通知位于“持久”标题下。这意味着在服务停止或删除之前无法删除通知。而这里,在翻译的时候,调用服务的方法(startForeground())有些“迷惑”。它的名字直接呼应了进程的名字——前台进程。但是尽管有这种巧合,以 Service.startForeground() 启动的服务仍然是一个可见的进程;
    • 它包含系统用于用户知道的特定功能的服务,例如动态壁纸、输入法等。

    可见进程被认为是关键进程,只有在必要时才会删除以保持所有前台进程运行。

    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5