Android Service组件在新进程中的启动过程

1、startService

Android系统匿名共享内存(Anonymous Shared Memory)Java调用接口分析http://blog.csdn.net/jltxgcy/article/details/31414509一文,Client调用了如下代码:

public class Client extends Activity implements OnClickListener {
     public void onCreate(Bundle savedInstanceState) {
        .....
        startService(new Intent("shy.luo.ashmem.server"));
        .....
     }
..
}

下面我们就分析整个流程,直到执行:

public class Server extends Service {
    public void onCreate() {
        Log.i(LOG_TAG, "Create Memory Service...");  

        memoryService = new MemoryService();  

        try {
            ServiceManager.addService("AnonymousSharedMemory", memoryService);
            Log.i(LOG_TAG, "Succeed to add memory service.");
        } catch (RuntimeException ex) {
            Log.i(LOG_TAG, "Failed to add Memory Service.");
            ex.printStackTrace();
        }  

    }
    .....
}

2、整个过程和Android Activity组件的启动过程http://blog.csdn.net/jltxgcy/article/details/35984557,几乎一致。只是ActivityRecord换成了ServiceRecord,mActivities换成了mServices,而且少了两个步骤,见下图:

Android Service组件在新进程中的启动过程

时间: 2024-10-08 07:51:57

Android Service组件在新进程中的启动过程的相关文章

Android 子Activity组件在进程内的启动过程 && 子Activity组件在新进程中的启动过程

1.子Activity组件在进程内的启动过程 在Android Activity组件的启动过程http://blog.csdn.net/jltxgcy/article/details/35984557一文中,我们已经详细分析了Activity的启动过程,对于子Activity组件在进程内的启动过程,我们只分析它们之间的不同. 主要是2处,1是不需要创建新的任务栈,2是不需要创建新进程和子线程. 第1点,体现在如下代码上: -/Android/frameworks/base/services/ja

Android Service组件在新进程绑定(bindService)过程

1.首先看两个例子 (1)进程内 Client端 public class CounterService extends Service implements ICounterService { ...... public class CounterBinder extends Binder { public CounterService getService() { return CounterService.this; } } ...... } Server端 public class Ma

Android Service组件在进程内绑定(bindService)过程

本文参考Android应用程序绑定服务(bindService)的过程源代码分析http://blog.csdn.net/luoshengyang/article/details/6745181和<Android系统源代码情景分析>,作者罗升阳 一.Android Service组件在进程内绑定(bindService)过程 0.总图流程图如下: 1.Counter和CounterService所在应用程序主线程向ActivityManagerService进程发送BIND_SERVICE_T

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

在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现一个以Service为基类的服务子类,在里面实现自己的计算型逻辑,然后在主进程通过startService函数来启动这个服务.在本文中,将详细分析主进程是如何通过startService函数来在新进程中启动自定义服务的. 在主进程调用startService函数时,会通过Binder进程间通信机制来

Android深入四大组件(一)应用程序启动过程

相关文章 Android系统架构与系统源码目录 Android系统启动流程(一)解析init进程启动过程 Android系统启动流程(二)解析Zygote进程启动过程 Android系统启动流程(三)解析SyetemServer进程启动过程 Android系统启动流程(四)Launcher启动过程与系统启动流程 Android应用程序进程启动过程(前篇) Android应用程序进程启动过程(后篇) 前言 在此前的文章中,我讲过了Android系统启动流程和Android应用进程启动过程,这一篇顺

linux 中开机启动过程简单

linux启动过程 1.开机自检,进入BIOS 2.读取MBR引导 3.GRUB菜单 4.加载内核 5.启动/sbin/init进程(系统的第一个进程) 读取/etc/inittab文件,选择运行级别启动 6.执行/etc/rc.d/rc.sysinit,进行初始化(进行网络配置,设置主机名...) 7.运行rc0.d 到 rc6.d 中的相应的程序 8.执行/etc/rc.local运行开机自启动软件 9.执行/bin/login程序,启动mingetty,进入登录界面

Android学习笔记:Android Service组件深入解析

在android开发系统(http://www.maiziedu.com/course/android-px/)中,service与activity一样是android的四大组件之一,他们不仅长得像,而且行为也比较类似.可是Service不像Activity在前台运行,而是与之呼应进行后台运行的服务:如果把 Activity当成下载软件的用户交互界面,而Service就是那个默默在后台运行的下载线程,所以Service的应用场景就是那些我们不需要它常驻前台但需要它一直在后台工作的时候,例如下载.

Android之Handler在新线程中读取网络的两种方法

方法一: 创建一个Thread,然后调用start方法. 实例: package com.example.android_handle; import java.io.BufferedInputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.http.util.ByteArrayBuffer; import android.app.A

Android四大组件之服务的两种启动方式详解

Service简单概述 Service(服务):是一个没有用户界面.可以在后台长期运行且可以执行操作的应用组件.服务可由其他应用组件启动(如:Activity.另一个service).此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC).例如:服务可以处理网络事务.播放音乐,执行文件 I/O 或与内容提供程序交互,而这一切均可在后台进行. 进程的优先级 了解进程的优先级可以帮助你理解服务~ 1. Foreground process(前台进程) 一句话总结:当前跟用户有交互