zoukankan      html  css  js  c++  java
  • Service的基本组成

    Service与Activity的最大区别就是一有界面,一个没有界面。

      如果某些程序操作很消耗时间,那么可以将这些程序定义在Service之中,这样就可以完成程序的后台运行,

    其实Service就是一个没有界面的Activity,执行跨进程访问也可以使用Service完成。

      Service是一个没有UI界面的操作组件,主要功能是为Activity程序提供一些必要的支持,例如:手机

    中的Mp3播放软件,当回到桌面的时候这些组件依然在运行,这就属于Service的功能,Service也有

    自己的生命周期方法。

     

      Service的生命周期控制方法:

    方法及常量

    类型

    描述

    1

    START_CONTINUATION_MASK

    常量

    解析执行Service

    2

    START_STICKY

    常量

    用于显示启动和停止Service

    3

    IBinder onBind(Intent intent)

    普通

    设置Activity和Service之间的绑定

    4

    onCreate()

    普通

    当一个Service创建时调用

    5

    onStartCommand(Intent intent,int flags,int startId)

    普通

    启动Service,由startService()方法触发

    6

    onDestroy()

    普通

    Service销毁时调用,由stopService()方法触发

     

     

     

     

     

     

    Service基本组成



    1、单击“启动Serivce”按钮得下图:



    2、再单击“启动Serivce”按钮得下图:



    3、单击“停止Serivce”按钮得下图:



    如果不退出Service,按Home键回到桌面,再找到任务管理器,可以发现Service还在运行,

    所以说Service是运行在后台的。



    在main.xml中:

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout

      xmlns:android="http://schemas.android.com/apk/res/android"

      android:orientation="vertical"

      android:layout_width="fill_parent"

      android:layout_height="fill_parent"

      android:background="#000000"

      android:gravity="center_horizontal">

      <Button

         android:id="@+id/start"

         android:layout_margin="30dp"

         android:layout_width="100dp"

         android:layout_height="40dp"

         android:background="#3399ff"

         android:textColor="#ffffff"

         android:text="启动Service" />

      <Button

         android:id="@+id/stop"

         android:layout_margin="30dp"

         android:layout_width="100dp"

         android:layout_height="40dp"

         android:background="#3399ff"

         android:textColor="#ffffff"

         android:text="停止Service" />

    </LinearLayout>

    在MyServiceDemo.java中:

    package com.li.service;

    import android.app.Activity;

    import android.content.Intent;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    public class MyServiceDemo extends Activity {

      private Button start ;

      private Button stop ;

      @Override

      public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         super.setContentView(R.layout.main);

         this.start = (Button) super.findViewById(R.id.start) ;

         this.stop = (Button) super.findViewById(R.id.stop) ;

         this.start.setOnClickListener(new StartOnClickListenerImpl()) ;

         this.stop.setOnClickListener(new StopOnClickListenerImpl()) ;

      }

      private class StartOnClickListenerImpl implements OnClickListener{

         public void onClick(View v) {

           MyServiceDemo.this.startService(new Intent(MyServiceDemo.this,MyServiceUtil.class)) ;

         }

      }

      private class StopOnClickListenerImpl implements OnClickListener{

         public void onClick(View v) {

           MyServiceDemo.this.stopService(new Intent(MyServiceDemo.this,MyServiceUtil.class)) ;

         }

        

      }

    }

    在MyServiceUtil.java中:

    package com.li.service;

    import android.app.Service;

    import android.content.Intent;

    import android.os.IBinder;

    public class MyServiceUtil extends Service {

      @Override

      public IBinder onBind(Intent intent) {

         return null;  // 此处暂时不做任何的处理

      }

      @Override

      public void onCreate() {

         System.out.println("*** Service onCreate()") ;

      }

      @Override

      public void onDestroy() {

         System.out.println("*** Service onDestroy()") ;

      }

      @Override

      public int onStartCommand(Intent intent, int flags, int startId) {

         System.out.println("*** Service onStartCommand") ;

         return Service.START_CONTINUATION_MASK; // 继续执行

      }

    }

    修改AndroidManifest.xml:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"

        package="com.li.service"

        android:versionCode="1"

        android:versionName="1.0" >

        <uses-sdk

            android:minSdkVersion="8"

            android:targetSdkVersion="15" />

        <application

            android:icon="@drawable/ic_launcher"

            android:label="@string/app_name"

            android:theme="@style/AppTheme" >

            <activity

                android:name=".MyServiceDemo"

                android:label="@string/title_activity_my_service_demo" >

                <intent-filter>

                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />

                </intent-filter>

            </activity>

            <service android:name=".MyServiceUtil" />

        </application>

    </manifest>

  • 相关阅读:
    注册机实现算法
    nginx优化配置服务,快速提升服务器性能,突破100000万高并发不是梦!
    语雀、有道云笔记、滴答清单一键保存文章,剪藏文章chrom、360极速浏览器火狐插件
    超简单!查询自己在CSDN、博客园、简书、知乎、51CTO等平台的百度收录情况
    最全的中文Vscode扩展插件&配置调试&快捷键&格式化方法
    中文汉化atom最美前端开发编辑器插件安装和常用配置&快捷键,5年的使用心得
    加速Github访问,最新地址仅需1步!修改host快速达到2M!
    使用标签link rel="alternate"属性,帮助搜索引擎对不同设备的用户提供不同类型的页面
    JavaScript高级程序设计学习笔记(1)
    idea中多模块项目引入
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3313152.html
Copyright © 2011-2022 走看看