`

android进程等级以及startService与boudservice区别

 
阅读更多
startService不会随着activity的消亡而消亡
boudService则会共消亡
 
If you need your service to communicate with remote processes, then you can use a Messenger to provide the interface for your service. This technique allows you to perform interprocess communication (IPC) without the need to use AIDL.
 
要提供远程服务,得需要Messenger 和AIDL
 
 
1、foreground process
    正处于activity resume状态
    正处于bound服务交互的状态
    正处于服务在前台运行的状态(StartForeGround()被调用)
    Service生命周期正在被执行(onCreate(),onStart(),onDestroy())
    BroadcastReceiver正在执行onReceive()方法
    杀死foreground需要用户响应,因为这个安全优先级是最高的
    是用户操作所必须的,任一时间下,仅有少数进程会处于前台,仅当内存实在无法供给它们维持同时运行时才会被杀死。一般来说,在这种情况下,设备依然处于使用虚拟内存的状态,必须要杀死一些前台进程以用户界面保持响应。
•Android会依据进程中当前活跃组件的重要程度来尽可能高的估量一个进程的级别。比如说,如果一个进程中同时有一个服务和一个可视的activity,则进程会被判定为可视进程,而不是服务进程。
2、visible process
    activity不在前端显示,但也没有完全隐藏,能够看得见,比如弹出一个对话框
    一个bound到visible或者foreground的activity的service
    没有前台组件,但仍可被用户在屏幕上所见。当满足如下任一条件时,进程被认为是可视的:
• 它包含着一个不在前台,但仍然为用户可见的activity(它的onPause()方法被调用)。这种情况可能出现在以下情况:比如说,前台activity是一个对话框,而之前的    activity位于其下并可以看到。
• 它包含了一个绑定至一个可视的activity的服务。
可视进程依然被视为是很重要的,非到不杀死它们便无法维持前台进程运行时,才会被杀死。
3、Service process
    正在运行的,不在上述两种状态的service
是由 startService() 方法启动的服务,它不会变成上述两类。尽管服务进程不会直接为用户所见,但它们一般都在做着用户所关心的事情(比如在后台播放mp3或者从网上下载东 西)。所以系统会尽量维持它们的运行,除非系统内存不足以维持前台进程和可视进程的运行需要。
4、background process
    不可见状态的activity进程,onstop被调用
    包含目前不为用户所见的activity(Activity对象的 onStop() 方法已被调用)。这些进程与用户体验没有直接的联系,可以在任意时间被杀死以回收内存供前台进程、可视进程以及服务进程使用。一般来说,会有很多背景进程 运行,所以它们一般存放于一个LRU(最后使用)列表中以确保最后被用户使用的activity最后被杀死。如果一个activity正确的实现了生命周 期方法,并捕获了正确的状态,则杀死它的进程对用户体验不会有任何不良影响。
5、empty process
    没有运行任何component的进程,保留这个进程主要是为了缓存的需要
    不包含任何活动应用程序组件。这种进程存在的唯一原因是做为缓存以改善组件再次于其中运行时的启动时间。系统经常会杀死这种进程以保持进程缓存和系统内核缓存之间的平衡。
此外,一个进程的级别可能会由于其它进程依赖于它而升高。一个为其它进程提供 服务的进程级别永远高于使用它服务的进程。比如说,如果A进程中的内容提供者为进程B中的客户端提供服务,或进程A中的服务为进程B中的组件所绑定,则A 进程最低也会被视为与进程B拥有同样的重要性。

 

分享到:
评论

相关推荐

    Android系统在新进程中启动自定义服务过程(startService)的原理

    "Android系统在新进程中启动自定义服务过程(startService)的原理" 在 Android 系统中,startService 函数是一个非常重要的函数,它允许开发者在新进程中启动自定义服务。这项技术可以将一些计算型逻辑从主进程中...

    android service 之一 (start service)

    此外,理解Service与IntentService的区别也很重要。IntentService是Service的一个子类,专为处理单一任务而设计,任务完成后自动停止,简化了生命周期管理。 在实际开发中,我们还需要考虑Service的性能影响和用户...

    Android Service之start实现

    在Android应用开发中,Service是四大组件之一,它在后台执行长时间运行的操作,不与用户交互。本篇文章将深入探讨如何使用`startService()`方法来启动Android服务。 Service的启动方式主要有两种:`startService()`...

    Android service start方式启动

    本示例将探讨“startService”方式启动Android服务的基本概念、工作原理以及如何实现一个简单的服务示例。 首先,我们需要理解`startService()`这个方法。当你调用`startService()`时,Android系统会启动指定的服务...

    Android 实现进程及Service常驻之MarsDaemon源码

    在Android系统中,保持应用进程和服务的常驻是一项常见的需求,尤其对于...通过深入理解Android进程生命周期、服务启动模式以及系统对后台应用的限制,开发者可以更合理地运用`MarsDaemon`,构建高效且持久的后台服务。

    android startService分析

    在Android系统中,`startService`是一个至关重要的方法,它用于启动一个后台服务(Service)。服务是Android四大组件之一,允许应用程序在没有用户界面的情况下执行长时间运行的操作。本篇文章将深入探讨`start...

    Android进程间传递对象

    本篇文章将深入探讨如何利用Parcelable和Service在Android进程中传递对象数据。 首先,我们来理解什么是Parcelable。在Android中,Parcelable是比Serializable更高效的数据序列化方式,用于在内存中创建对象的二...

    Android Service的startService

    在Android应用开发中,`Service` 是一个非常重要的组件,它允许应用程序在后台长时间运行操作,即使用户没有与应用程序交互。本篇文章将深入探讨 `startService()` 方法的使用及其在实际案例中的应用。 ### 一、...

    Android startService bindService Aidl service基础全

    总结起来,理解并掌握Android中的`startService()`, `bindService()`, `IntentService`以及AIDL,是提高应用性能和设计高效服务的关键。通过这些知识点,开发者能更好地处理后台任务,实现组件间的有效通信,提升...

    Android防止service多次执行startCommand

    在Android应用开发中,Service是四大组件之一,用于在后台长时间运行操作,比如播放音乐、网络通信等。然而,如果不加以控制,用户或者系统可能会多次启动同一个Service,导致不必要的资源消耗和服务的异常行为。本...

    2011.09.01(3)——— android service startService bindService

    本篇文章将详细讲解 `startService` 和 `bindService` 这两种启动 `Service` 的方式,以及它们之间的区别和应用场景。 `startService` 是 Android 中启动 `Service` 的常见方式之一。当你调用 `startService()` ...

    Android中startService()和bindService()的测试

    实例详解Android中startService()和bindService()的区别。 说明详见http://blog.csdn.net/a343902152/article/details/50857316

    android 进程保活,

    3. 服务进程:运行在后台的服务,如果服务被声明为startService,其进程将被视为服务进程,系统会尽可能保留。 4. 后台进程:已经失去用户界面,但仍保留Activity实例的进程。这类进程在系统内存不足时会被优先回收...

    音乐播放器bindservice和startService

    在Android应用开发中,音乐播放器的实现是一个常见的需求,涉及到多媒体处理、用户界面设计以及服务(Service)的使用。本篇文章将详细讲解如何利用`bindService`和`startService`来实现音乐播放功能,这两种服务...

    Android服务startService联系

    用AndroidStudio编写,里面的Activity有三个按钮,用startService函数分别启动三个服务,一 个是通过继承Service类实现的服务,一个是通过继承Service类在里面定义一个线程来处理服务,还有一个是通过继承...

    方式一:Context.startService()源码

    在Android应用开发中,服务(Service)是一种用于在后台长时间运行的任务,即使用户与应用程序的交互界面已经关闭,服务仍然可以继续执行。本篇文章将详细探讨`Context.startService()`方法的使用及其源码分析,帮助...

    android service 简单实例源代码

    在Android开发中,Service是四大组件之一,它在后台运行,不与用户界面直接交互,常用于执行长时间的任务,如播放音乐、网络通信等。本篇文章将深入解析"android service 简单实例源代码",帮助你理解如何在Android...

    StartService方式启动Service

    总结来说,`StartService` 方式启动的 `Service` 主要用于执行后台任务,不提供与客户端的直接交互。在实际应用中,我们需要考虑服务的生命周期管理,避免过度消耗系统资源。同时,结合使用 `BroadcastReceiver` ...

    startService

    在Android应用开发中,`startService` 是一个关键的组件调用方法,用于启动一个后台服务(Service)。这个服务可以在不与用户界面交互的情况下运行,执行长时间的任务,比如播放音乐。在本例中,我们将深入探讨如何...

    start service 启动不了解决方案

    start service 启动不了解决方案

Global site tag (gtag.js) - Google Analytics