安卓学习之服务基本用法

服务的生命周期

  服务被启动后,会回调onStartCommand()方法, 如果这个服务是第一次创建,那么会调用onCreate()方法。服务启动之后会一直运行直到stopService()或stopSelf()方法被调用。虽然每调用一次 startService()方法,

但是服务只会存在一个实例。所以不管调用几次startService()方法,只需调用一次 stopService()或 stopSelf()方法,服务就会停止下来了。

  调用 Context的bindService()方法,可以获取服务的连接,这时候就会调用服务的onBind()方法,返回IBinder对象的实例, 这样就能和服务进行通信了。只要和服务的连接没有断开,服务就会一直保持运行状态。

  所以当调用startService()方法后,又去调用stopService()方法,这时服务中的onDestroy()方法就会执行,表示服务销毁。当调用了 bindService()方法后,又去调用unbindService()方法,onDestroy()方法也会执行。如果一个活动被调用了startService()和bindService()方法,那么我们就要同时调用stopService()和unbindService()方法,这样onDestory()方法才会被执行。

  这些就遍历了服务的生命周期。

服务

  服务要在AndroidManifest.xml中注册

  服务的创建:

public class LongRunningService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }
}
  onBind()方法是一个抽象类,所以必须实现它。当服务第一次调用时,就会调用onCreate(),调用onStartCommand()方法。 之后调用服务就不会在调用onCreate()方法,直接调用onStartCommand()方法。onDestory()方法会在服务销毁时调用。
时间: 2024-12-24 23:09:30

安卓学习之服务基本用法的相关文章

学习AngularJs:Directive指令用法(完整版)

这篇文章主要学习AngularJs:Directive指令用法,内容很全面,感兴趣的小伙伴们可以参考一下 本教程使用AngularJs版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 摘要:Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元素或LASS属性或ATTR属性,并

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

安卓学习第9课——计时器chronometer

今天学习了钟表及计时器.. 我觉得AnalogClock和DigitalClock直接使用就可以.唯一需要知道的就是AnalogClock是可以修改表盘和分针时针的. 方法是android:dail及android:hand_minute和hand_hour. 下面介绍的是计时器的用法. 首先xml中只要放入一个chronometer和一个按钮即可.为的是是点击启动按钮,开始计时,20s停止. package com.example.chronometer; import android.app

安卓学习第10课——listview

1.普通listview <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" androi

安卓学习笔记(二)基本构件

1.Activity 一个Activity,通常是用户在某一个时刻,在设备上看到的单独的界面.一个应用程序通常含有多个Activity,用户可在期间进行切换.对用户而言,这就是程序的外观部分. Activity的生命周期:启动一个Activity可能会消耗大量资源.他可能会涉及到新建一个Linux进程.为UI对象申请内存空间.从UML布局填充所有对象,以及创建整个界面.为了避免这种浪费,Android通过ActivityManager来管理活动的生命周期. ActivityManager负责创建

[安卓学习]AndroidManifest.xml文件内容详解

一,重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

Linux学习闲谈(三) ——SVN用法及切版本与合版本

Linux学习闲谈(三) --SVN用法及切版本与合版本 (转载请附上本文链接--linhxx) SVN(Subversion)在工程中运用广泛,多人合作项目.项目版本控制等方面,SVN都是不可或缺的.虽然最近很多项目也在使用Git,但SVN仍是现在流行的版本控制系统.SVN与Git相比,最大的一个优势是存在全局版本号. 一.概述 SVN分为客户端和服务端,即需要在一台大家都能访问到的服务器上安装SVN的服务端,然后各自的电脑里安装SVN的客户端.安装的过程这里不讲,有很多博客如http://w

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

安卓学习第13课——BaseAdapter

BaseAdapter创建这么一个对象,需要些四个方法. int getCount(); Object getItem(int position); long getItemId(int position);View getView(int position, View convertView, ViewGroup parent);(1)列表中的项数(2)返回值的列表内容(3)获得postion处的列表项的ID(4)该列表项里的组件 package com.example.baseadapter