首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

像whatsapp这样的应用程序是如何作为后台服务运行的,这些应用程序不会被android系统终止

WhatsApp等应用程序能够在Android设备上作为后台服务运行,主要依赖于以下几个关键技术和机制:

基础概念

  1. 后台服务(Background Services):这是Android系统中的一种组件,允许应用程序在后台执行长时间运行的操作,即使用户没有打开应用程序的界面。
  2. 通知(Notifications):为了保持与用户的交互,后台服务通常会显示一个通知,让用户知道应用程序正在运行。
  3. 唤醒锁(Wake Locks):为了防止设备在后台服务运行时进入休眠状态,可以使用唤醒锁来保持CPU的活跃。
  4. JobScheduler和WorkManager:这些API允许应用程序安排在特定条件下执行的任务,例如当设备充电时或网络可用时。

优势

  • 持续运行:后台服务可以确保应用程序的核心功能即使在用户不活跃时也能继续运行。
  • 实时通信:对于像WhatsApp这样的即时通讯应用,后台服务是实现实时消息传递的关键。

类型

  • 本地服务(Local Service):服务运行在主进程的主线程中,适用于简单的后台任务。
  • 远程服务(Remote Service):服务运行在不同的进程中,适用于需要跨进程通信的复杂任务。

应用场景

  • 消息推送:实时接收和发送消息。
  • 数据同步:定期或按需同步用户数据。
  • 后台数据处理:处理图片、视频或其他媒体文件。

遇到的问题及解决方法

问题:Android系统可能会终止后台服务

原因:为了节省电池和内存,Android系统可能会在资源紧张时终止后台服务。

解决方法

  1. 使用前台服务(Foreground Service):通过调用startForeground()方法,可以将服务提升为前台服务,这样系统就不太可能终止它。前台服务需要显示一个通知。
  2. 使用前台服务(Foreground Service):通过调用startForeground()方法,可以将服务提升为前台服务,这样系统就不太可能终止它。前台服务需要显示一个通知。
  3. 使用JobScheduler或WorkManager:这些API允许系统在资源充足时执行任务,从而减少被终止的可能性。
  4. 使用JobScheduler或WorkManager:这些API允许系统在资源充足时执行任务,从而减少被终止的可能性。
  5. 优化资源使用:减少后台服务的资源消耗,例如通过限制CPU使用率、减少内存占用等。

参考链接

通过上述方法和技术,WhatsApp等应用程序能够在Android设备上实现稳定的后台运行,确保用户即使在应用未打开的情况下也能保持实时通信。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android内存管理(六)Android对Linux系统的内存管理机制进行的优化

进程的生命周期 Android的一个不寻常的基本特征是应用程序进程的生命周期并非是由应用本身直接控制的。...这样一来,系统就有可能随时终止进程以回收内存,而这也最终会导致运行在进程中的线程被终止。...托管系统用于某个用户可察觉的特定功能的Service,比如动态壁纸、输入法服务等等。 可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。...保留这种进程的的唯一目的是用作缓存(为了更加有效的使用内存而不是完全释放掉),以缩短下次启动应用程序所需的时间,因为启动一个新的进程也是需要代价的。只要有需要,Android会随时杀死这些进程。...从理论上来讲,无论是哪种情况,在没有任何后台工作线程(即便应用处于后台,工作线程仍然可以执行)的前提下,被置于后台的进程都只是保留他们的运行状态,并不会占用CPU资源,所以也不耗电。

1.6K10

APP消息推送方案调研

使用GCM推送服务的whatsapp即使后台程序和服务都关闭掉,也依然可以在第一时间接收到新消息的推送(实测在国内whatsapp也的确可以在后台关闭的情况下正常通过GCM接受实时消息)。...优劣势所以, iOS 的推送,可以不严谨的理解为: 1)苹果服务器朝手机后台挂的一个 IM 服务程序发送的消息; 2)系统根据该 IM 消息识别告诉哪个 Apps 具体发生了什么事; 3)系统分别通知这些...优劣势Apps 挂后台一直是 Android 引以为豪的特性,挂后台等待推送就成为技术选择;但是,没人真正为用户的电池负责。Apps 的开发者不会站在系统层面考虑的。...Android消息推送原理操作系统有自身的消息推送功能(系统级别)系统级别:任何时候都可以推送给用户,且不会被系统杀死Android的消息推送服务称为:C2DM(Cloud to Device Messaging...这些令牌是设备与FCM服务交互的唯一标识符。以下是获取这些令牌的步骤:集成Firebase SDK:首先,确保你的应用已经集成了Firebase SDK。

40110
  • 安卓软件开发_应用程序UI组件意外停止

    引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西。...因此,不像其他大多数系统的应用程序,Android应用程序没有一个单一的入口点(例如,没有main()函数)。相反,系统能够实例化和运行需要几个必要的组件。...然而,音乐播放本身不会被一个活动处理,因为用户希望保持音乐继续播放,当用户离开播放器去做其他事情时。为了保持音乐继续播放,媒体播放器活动可以启动一个服务运行在后台。...系统将保持音乐播放服务运行,甚至媒体播放器离开屏幕时。 可以连接到(绑定到)一个持续运行的服务(并启动服务,如果它尚未运行)。连接之后,你可以通过服务暴露的接口与服务交流。...对于音乐服务,这个接口可以允许用户暂停、倒带、停止和重新播放。 像活动(activities)和其他组件一样,服务(services)运行在应用程序进程中的主线程中。

    1K10

    Android面试题大全

    为什么还需要开启消息循坏 使用子线程更新UI有实际应用场景吗 Android程序运行时权限与文件系统权限的区别 Android进程与线程 进程 前台进程 可见进程 服务进程(service进程) 后台进程...Service 组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。...这样一来,对于程序当中的隐私数据可以不共享,从而更加安全。...( 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。 ) 有序广播和无序广播的区别 普通广播: 即为 无序广播,谁都可以接收,并不会相互打扰。...这样做的好处是 Android 应用程序进程之间不会相互影响,也就是说,一个 Android 应用程序进程的意外终止,不会影响到其他的应用程序进程的正常运行。

    1.3K50

    Android四大组件详解

    Service 组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。...定义与作用 定义与作用:Service(服务)是一个没有用户界面的专门在后台处理耗时任务的 Android 组件,它没有UI。它有两种启动方式,startService和bindService。...这样一来,对于程序当中的隐私数据可以不共享,从而更加安全。...系统到底是如何根据一个 Uri 就能够提供给我们准确的结果呢?只有自己亲自实现一个看看了。...( 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。 ) 有序广播和无序广播的区别 普通广播: 即为 无序广播,谁都可以接收,并不会相互打扰。

    5.6K20

    保护您的 Android 手机的 10 种方法

    那么,Android 用户如何在更好的技术与最佳网络安全实践的安全性之间取得平衡呢?以下是保护您的 Android 手机的一些行之有效的方法。...我如何保护你:让我数一数路 让我们面对现实吧,“每月有超过 20 亿台活跃设备”对于网络犯罪分子来说听起来令人垂涎三尺,无论这些设备运行的是什么糖果主题操作系统版本。...停止透露您的位置。 出于某种原因,许多应用程序想要访问地理定位(甚至在用户不使用应用程序时请求在后台运行地理定位的权限)。...当拥有旧的 Android 不安全时 我们开始这篇文章的前提是我们的用户在廉价手机上运行旧的 Android 版本。有人可能会问:“用户可以使用这款手机多久?”...只需一键 无论您的 Android 手机是运行具有最新应用程序的最新操作系统的最新型号还是相反,冷酷无情或不知情的点击此处或此处可能实际上不会对您的整体安全状况产生影响。

    58610

    超详细,Android AMS面试攻略,带你突破面试难关

    引言 在Android开发领域,ActivityManagerService (AMS) 是一个至关重要的系统服务,负责管理应用程序的生命周期和任务栈。...详细解析: Zygote是Android系统中的一个特殊进程,它负责为系统创建其他应用程序进程。 SystemServer是Android系统中的核心服务进程,它负责初始化和管理各种系统服务。...终止应用程序: 当用户退出应用程序时,AMS会依次调用应用程序各个组件的生命周期方法,并将其销毁。如果应用程序进程不再有任何活动组件在运行,AMS可能会结束该进程以释放资源。...可见进程的优先级次于前台进程,但高于后台进程。 服务进程(Service Process): 这些进程正在后台执行Service,没有与用户直接交互,但是可能执行一些长时间运行的任务。...通常情况下,系统会保持至少一个前台进程,以确保用户体验;当系统内存不足时,AMS会优先杀死后台进程,以释放内存资源。 其它 问题: Android中的内存管理机制是怎样的?AMS是如何参与其中的?

    73610

    谷歌加入聊天机器人大战,微软Facebook将如何应对?

    在微软的基础上,谷歌找到了一种方式,使应用开发人员能够创建在现有的消息应用程序内部运行的程序,如Facebook的Messenger或由谷歌旗下的不太流行的消息应用程序。 ?...2、Google Now的一些访问权限,Google Now是谷歌的服务,可以从一个人的谷歌日历、谷歌搜索和Chrome网页浏览活动提取信息,提供用户自定义的提醒,如何时应该出发去开会、或对内容提出建议...我们不知道谷歌将在明天的开发者大会上谈到哪个功能。 信息服务用户争夺之战,谷歌和微软已经输了。赢家是Facebook的Whatsapp和Messenger,以及企业使用的Slack。...目前还不清楚使用谷歌工具的开发者是否也能够接触到谷歌另一个消息应用程序Hangouts的用户。 像Facebook Messenger这些早期实现聊天机器人的软件,人们颇有微词。...但消息应用的重要性越来越显著,WhatsApp和Facebook Messenger所处理消息的数量已经是全球短信的三倍,其已经可以作为一种操作系统。

    1.1K70

    「Android」四大组件,你真的都掌握了?

    这些钩子可以在正常的生命周期(正常是由操作系统控制的)之外控制Android控件的运行。 它们同时可以控制Android如何加载应用程序。...新运行的 android 应用程序在使用所需要的资源时不必每次重新形成资源的链接信息,这样提高程序运行速度。 在 android 中,使用Zygote进程的目的?...对于手机,为了是应用程序在有限的资源型有更快的运行响应速度,提高资源利用率和设备使用时间。android 使用 Zygote 来有效的减少系统负担,提高运行速度。...这是最安全的选项,可以避免在不必要时以及应用能够轻松重启所有未完成的作业时运行服务 START_STICKY 如果系统在 onStartCommand() 返回后终止服务,则会重建服务并调用 onStartCommand...这适用于不执行命令、但无限期运行并等待作业的媒体播放器(或类似服务 START_REDELIVER_INTENT 如果系统在 onStartCommand() 返回后终止服务,则会重建服务,并通过传递给服务的最后一个

    1.1K40

    iOS app中蓝牙的后台处理

    这里有两种模式可以供app选择,一种是作为中心角色是实现,另一种是作为周边角色。如果你的app把他两都实现了,那你就该把两种后台模式都实现了。...举个例子,当你的app被系统重启时,你可以检索系统为你的应用程序保留的中央管理器对象的所有恢复标识符,像这样: - (BOOL)application:(UIApplication *)application...为了使你的应用程序能够以系统所代表的方式(当它不运行时)加快速度,你必须实现相应的恢复委托方法。...例如,在centralManagerDidUpdateState:委托方法中初始化您的应用程序时,您可以了解您是否已成功发现已还原外设的特定服务(在应用程序终止之前),如下所示: NSUInteger...像上面例子所示:如果系统在完成发现服务之前终止了应用程序,请通过调用discoverServices:开始探索恢复的外围设备的数据。

    4.2K30

    Android 渗透测试学习手册 第五章 Android 取证

    Android 文件系统的主分区通常被分区为 YAFFS2。在 Android 中使用 YAFFS2 的原因是,它为设备提供了优势,这包括更高的效率和性能,以及更低的占用空间。...几年前,当 Android 刚刚推出时,取证是平台上的一个大问题,因为几乎没有支持 YAFFS2 文件系统格式的取证工具。 SD 卡是 FAT32 类型,是正常系统用户中的共享格式。...在接下来的章节中,我们将深入介绍 Android 文件系统,并将研究如何以最有效的方式从文件系统中提取数据。...一旦我们将项目导入到我们的工作区,我们就可以在我们的设备上运行它,方法是右键单击项目并选择“运行为 Android 应用程序”。...tar cvf backups.tar BackupDBS/ 然后,从系统中,我们可以简单地像这样拉取它。

    78110

    Android面试

    Android开发中何时使用多进程 要想知道如何使用多进程,先要知道Android里的多进程概念。一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。...如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。...如何保证Service在后台不被kill 1、Service设置成START_STICKY(onStartCommand方法中),kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样...服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户关心的,例如用户正在非音乐界面听的音乐或者正在非下载页面自己下载的文件等;当系统要空间运行前两者进程时才会被终止...后台进程:其中运行着执行onStop方法而停止的程序,但是却不是用户当前关心的,例如后台挂着的QQ,这样的进程系统一旦没了有内存就首先被杀死 空进程:不包含任何应用程序的程序组件的进程,这样的进程系统是一般不会让他存在的

    99650

    Android 中意料之外的应用崩溃以及它们的解决方案

    而在应用发布后,监视应用程序中这些不断增加的崩溃是一种极其不愉快的体验。 不管应用程序的业务逻辑如何,都可能会因为运行的系统或平台问题而导致出现某些奇怪的崩溃现象。...每个 Android 应用程序都在其自己的进程中运行,并且操作系统已为该进程分配了一些内存。...当用户与其他应用程序交互时将应用程序置于后台时,如果应用程序没有足够的可用内存,则操作系统会终止你的应用程序进程。而这一情况通常发生在前台运行另一个需要更大手机内存 (RAM) 的应用程序时。...如果是,请不要担心,我们将在下一部分中讨论如何处理此问题。如果没有,你可以松一口气了,因为这是你应得的。 需要注意的是,从后台打开应用后,请重新获取应用所属进程的 PID。...结论 在 Android 平台上,由于进程被终止而导致的应用崩溃是很常见的。而如果我们使用较新的 Android 版本,我们可以注意到,出于节省电源的目的,大量的后台应用程序被强制结束运行了。

    1.2K10

    android service详解(1)

    一、Service(服务)概述 (1)Service是Android系统中的四大组件之一。 (2)Service是可以在后台执行长时间运行操作而没有用户界面的应用组件。...服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activity)已销毁也不受影响,除非系统必须回收内存资源,否则系统不会停止或销毁Service。...绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信(IPC) 跨进程执行这些操作。仅当与另一个应用组件绑定时,绑定服务才会运行。...如果未设置,则将使用应用程序图标 isolatedProcess 设置该服务是否作为一个单独的进程运行,如果设置为true,此服务将在与系统其余部分隔离的特殊进程下运行,并且没有自己的权限,与它唯一的通信是通过服务...通常,应用程序的所有组件都运行在应用程序创建的默认进程中,它与应用程序包名具有相同的名称。

    1.4K20

    app自动化面试题

    Service服务:是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要长期运行的任务(一边打电话,后台挂着QQ)。...服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务扔然能够保持正常运行,不过服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。...当某个应用程序进程被杀掉后,所有依赖于该进程的服务也会停止运行(正在听音乐,然后把音乐程序退出) 5 App测试中ios和Android有哪些区别呢?...这个主要是面试官考察你会不会看日志,是不是看得懂java里面抛出的异常Exception,一般面试中java Exception(runtimeException )是必会被问到的问题 app崩溃的常见原因应该也是这些了...Appium是一个免费分发的开源移动应用UI测试框架,可以对android及ios系统的app进行自动化测试 12 解释移动应用程序中如何查找DOM元素 要找到DOM元素,使用“UIAutomateviewer

    1.4K20

    Android-Service详解

    前言 Service 是长期运行在后台的应用程序组件 。 Service 是和应用程序在同一个进程中,所以应用程序关掉了,Service也会关掉。...所以系统保证他们的运行,直到不能保证所有的前台可见程序都正常运行时才会终止他们。...4 一个后台进程就是一个非当前正在运行的activity(activity的onStop()方法已经被调用),他们不会对用户体验造成直接的影响,当没有足够内存来运行前台可见程序时,他们将会被终止。...5 一个空线程没有运行任何可用应用程序组,保留他们的唯一原因是为了设立一个缓存机制,来加快组件启动的时间。系统经常杀死这些内存来平衡系统的整个系统的资源,进程缓存和基本核心缓存之间的资源。...Android把进程里优先级最高的activity或服务,作为这个进程的优先级。例如,一个进程拥有一个服务和一个可见的activity,那么这个进程将会被定义为可见进程,而不是服务进程。

    89010

    ETH对比BTC有什么优点和缺点?

    以太坊是一个执行智能合约的分散平台:恰恰是这些不同的应用程序完全按照其编程执行,没有停机,审查,欺诈或来自第三方的干扰。这些应用程序在自定义区块链上运行,这是一个强大的共享和全球网络基础架构。...购买以太坊采矿投资 与比特币相比,以太坊不是纯粹的加密货币,而是由智能合约组成的某些应用程序的平台。以太坊的目标是使用比特币区块链技术分散数据。以太坊交易可以包括分散运行的完整程序。...以太坊如何运作 以太坊分散数据。想象一下通过WhatsApp发送消息给你的一个朋友。该消息从您的手机发送到WhatsApp的中央服务器,然后转发给您的朋友的手机。...由此带来的风险是,WhatsApp的服务器坏了,或者想在那里读某个人,这样你的信息就不安全了。那将是一个中央网络。 在以太坊[3]原则上发送消息时,即与分散的网络,它会看起来像这样。你给我发消息。...每台参与计算机都会以“以太”货币的形式获得小额奖励,用于提供服务或提供计算能力。 以太坊有什么特别之处? 像保时捷,IBM,博世和思科这样的公司已经在开发自己的以太坊区块链项目。

    3.4K40

    揭秘:安卓木马是如何盗取用户手机银行的

    图12:获取正在运行进程的包的名字 如果匹配的应用程序被发现正在受感染设备上运行,负责回应的类会显示上映的伪造的登录页面。 ?...之后你可以看到受害者会被要求进入这个登录界面两次。接下来,受害者将被重定向到合法的DBS应用GUI。 在假的登录界面截取的登录凭证就会被恶意软件发送的C&C服务器上: ?...因此,所有接收的SMS都可以被很容易的劫持,SMS的内容可以被发送到攻击者的C&C服务器。 ? 图15:拦截所有接收到的SMS短信 持久性机制 我们还有兴趣了解恶意软件的持久性机制是如何工作的。...明智的做法是从Google Play商店这种安全的受信任的源来下载应用程序。 话虽这么说,恶意软件编写者也会提高钓鱼能力,让用户下载看起来像合法app的恶意软件并进行更新。...安装安全软件更有助于保护用户的个人数据和设备上的在线交易资料。 主动检测恶意软件,如Android/Acecard.B!tr,C&C服务器就会被监测成Android.Acecard。

    3.7K90

    初探Electron,从入门到实践

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者 在开始之前,我想您一定会有这样的困惑:标题里的Electron 是什么?Electron能做什么?...WordPress 桌面是一个使用了Electron和React作为框架的桌面应用程序,提供无缝的跨平台体验,允许用户专注于他们的内容和设计,而不会被任何浏览器标签所分心。 4. Slack ?...WhatsApp WhatsApp作为下载量最高的Messenger应用程序,也是基于Electron框架构建的。...每个 BrowserWindow 实例都在自己的渲染进程里运行页面。 当一个BrowserWindow 实例被销毁后,相应的渲染进程也会被终止。...其中比较好的方案是用 Storage API, localStorage,sessionStorage 或者 IndexedDB,但这些不是今天的主题。 如何构建 Electron系统架构?

    2.6K20
    领券