zoukankan      html  css  js  c++  java
  • 安卓突击:service的基础知识

    如何启用 Service,如何停用 Service。
    Android 中的 service 类似于 windows 中的 service, service 一般没有用户操作界面,它运行于系统中不容易被用户发觉。
    一。步骤
    第一步:继承 Service 类
    public class SMSService extends Service { }
    第二步:在 AndroidManifest.xml 文件中的<application>节点里对服务进行配置:
    <service android:name=".DemoService" />
    二。 Context.startService() 和 Context.bindService
    服务不能自己运行,需要通过调用 Context.startService() 或 Context.bindService() 方法启动服务。这
    两个方法都可
    以启动 Service,但是它们的使用场合有所不同。
    1. 使用 startService() 方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。
        使用 bindService() 方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。
    2. 采用 Context.startService() 方法启动服务,在服务未被创建时,系统会先调用服务的 onCreate() 方法,接着调用       onStart() 方法。如果调用 startService() 方法前服务已经被创建,多次调用 startService() 方法并不会导致多次创建服务,但   会导致多次调用 onStart() 方法。采用 startService() 方法启动的服务,只能调用 Context.stopService() 方法结束服务,服务结束时会调onDestroy() 方法。
    3. 采用 Context.bindService() 方法启动服务,在服务未被创建时,系统会先调用服务的 onCreate() 方法,接着调用   onBind() 方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind() 方法。接着调用   onDestroy() 方法。如果调用 bindService() 方法前服务已经被绑定,多次调用 bindService()方法并不会导致多次创建服务及  绑定(也就是说 onCreate() 和 onBind() 方法并不会被多次调用) 。如果调用者希望与正在绑定的服务解 除 绑 定 , 可 以 调   用 unbindService() 方 法 , 调 用 该 方 法 也 会 导 致 系 统 调 用 服 务 的onUnbind() -->onDestroy() 方法。

    三。 Service 的生命周期
    1.Service 常用生命周期回调方法如下:
    onCreate() 该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次 startService() 或bindService() 方法,
    服务也只被创建一次。 onDestroy() 该方法在服务被终止时调用。
    2. Context.startService() 启动 Service 有关的生命周期方法
    onStart() 只有采用 Context.startService() 方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用 startService() 方法尽管不会多次创建服务,但 onStart() 方法会被多次调用。
    3. Context.bindService() 启动 Service 有关的生命周期方法
    onBind() 只有采用 Context.bindService() 方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用 Context.bindService() 方法并不会导致该方法被多次调用。onUnbind() 只有采用 Context.bindService() 方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用。

    1. 采用 startService() 启动服务
    Intent intent = new Intent(DemoActivity.this, DemoService.class);
    startService(intent);
    2.Context.bindService() 启动
    Intent intent = new Intent(DemoActivity.this, DemoService.class);
    bindService(intent, conn, Context.BIND_AUTO_CREATE);
    //unbindService(conn);//解除绑定
























  • 相关阅读:
    【代码笔记】Java连连看项目的实现(1)——JTable 、TableModel的使用
    【代码笔记】多线程游戏开发——伏魔记:第一步——开始游戏界面实现(一)
    【代码笔记】Java基础:Java的方法和类
    【代码笔记】Java基础:类的继承(构造器)
    【代码笔记】XML深入学习:DTD约束与DTD语法(2)
    常见标签的全称
    CSS中margin与padding的区别
    jquery 执行语句无响应
    jquery autocomplete插件结合ajax使用
    在使用flask_Bootstrap的时候先加载了jquery-ui然后再加载jQuery,导致jQuery-ui无法使用。
  • 原文地址:https://www.cnblogs.com/zhuzhenfeng/p/4745186.html
Copyright © 2011-2022 走看看