zoukankan      html  css  js  c++  java
  • Service

    1.Service是一个应用程序组件(component),与Activity,BroadcastReceiver在一个层次;

    2.Service没有图形界面;

    3.通常用来处理一些耗时较长的操作(下载,播放音乐..),如果用BroadcastReceiver处理超过10s的操作通常会报错;

    4.可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等等

    &

    1.Service不是一个单独的进程

    2.Service不是一个单独的线程

    所以service和整个程序是在同一个进程和线程中运行的。

    进程拥有独立的内存空间以及一些资源,一个进程里面可以包含多个线程(至少一个),一个应用程序最少有一个进程。

    对于多个线程,CPU采用时间片调度算法使得线程之间不停快速切换,使我们感觉程序好像在同时运行。

    生命周期:

    注:Android2.0以后的版本,onStart()已经被onStartCommand()代替了

    Service与Activity一样,也有一个从启动到销毁的过程,但Service的这个过程比Activity简单得多。Service启动到销毁的过程只会经历如下3个阶段:

    创建服务

    开始服务

    销毁服务

    一个服务实际上是一个继承android.app.Service的类,当服务经历上面3个阶段后,会分别调用Service类中的3个事件方法进行交互,这3个事件方法如下:

    1. public void onCreate(); // 创建服务
    2. public void onStart(Intent intent, int startId); // 开始服务
    3. public void onDestroy(); // 销毁服务

    一个服务只会创建一次,销毁一次,但可以开始多次,因此,onCreate和onDestroy方法只会被调用一次,而onStart方法会被调用多次。

    例如,我在onCreate()写了一个toast:

    Toast.makeText(context, "it's oncreate()", Toast.LENGTH_LONG).show();

    用短信触发这个Service,在这个程序没有运行的时候,用短信触发之后,toast显示了“it's oncreate()”,

    然而再次尝试用短信触发这个程序的时候,不再显示了,因为这个程序在后台运行了,service已经被启用。

    当我们把这个程序kill掉之后,则可以重新通过短信触发oncreate里的toast。

    而如果在onStartCommand()里面写一个toast:

    Toast.makeText(context, "it's onStartCommand()", Toast.LENGTH_LONG).show();

    那么每次用短信触发的时候就都会出现"it's onStartCommand()"的toast,不会出现只toast一次的情况。

    注意这个toast要写在return语句的前面,不然报错,return后面好像是不能写字的。

    LINKS:

    BroadcastReceiver调用Service:

    http://www.cnblogs.com/larrylawrence/p/3421629.html

  • 相关阅读:
    nginx能访问html静态文件但无法访问php文件
    LeetCode "498. Diagonal Traverse"
    LeetCode "Teemo Attacking"
    LeetCode "501. Find Mode in Binary Search Tree"
    LeetCode "483. Smallest Good Base" !!
    LeetCode "467. Unique Substrings in Wraparound String" !!
    LeetCode "437. Path Sum III"
    LeetCode "454. 4Sum II"
    LeetCode "445. Add Two Numbers II"
    LeetCode "486. Predict the Winner" !!
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3420896.html
Copyright © 2011-2022 走看看