Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 685|回复: 0

Android---组件篇---Service(服务)-  Android学习

[复制链接]

该用户从未签到

发表于 2011-10-24 14:53:03 | 显示全部楼层 |阅读模式
Service是Andorid系统提供的四大组件之一,它的地位和Activity是并列的,只是使用的频率没有Activity高。Service就是运行于后台的一种服务程序,一般很少和用户交互,因此没有可视化界面。
         定义一个Service类只要继承Service类即可,实现其生命周期中的方法就可以了,另外,一个定义好的Service组件必须要在AndoridManifest.xml文件中注册才能够使用。
         Service有自己的生命周期,可以调用startService()启动一个Service或者使用bindService()来绑定一个service,还可以通过RPC(远程进程调用)机制来实现不同进程间Service的调用。
Service中定义了一系列和自身生命周期相关的方法:
onBind(Intent intent):是必须实现的一个方法,返回一个绑定的接口给Service。
onCreate():当Service第一次被创建时,由系统调用。
onStart(Intent intent,int startId):当通过startService()方法启动Service时,该方法被调用。
onDestroy():当Service不再使用,系统调用该方法。


实例如下:
MyService.java

Java代码
/*

* @author hualang

*/

package org.hualang.service;



import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.util.Log;

import android.widget.Toast;



public class MyService extends Service {



        @Override

        public IBinder onBind(Intent intent) {

                // TODO Auto-generated method stub

                Log.i("SERVICE", "onBind.................");

                Toast.makeText(MyService.this, "onBind.................", Toast.LENGTH_LONG).show();

                return null;

        }

        

        public void onCreate()

        {

                Log.i("SERVICE", "onCreate................");

                Toast.makeText(MyService.this, "onCreate................", Toast.LENGTH_LONG).show();

        }

        public void onStart(Intent intent,int startId)

        {

                Log.i("SERVICE", "onStart.................");

                Toast.makeText(MyService.this, "onStart.................", Toast.LENGTH_LONG).show();

        }

        public void onDestroy()

        {

                Log.i("SERVICE", "onDestroy.................");

                Toast.makeText(MyService.this, "onDestroy.................", Toast.LENGTH_LONG).show();

        }

}
复制代码


ServiceTest.java

Java代码

/*

* @author hualang

*/

package org.hualang.service;



import android.app.Activity;

import android.app.Service;

import android.content.ComponentName;

import android.content.Intent;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.IBinder;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;



public class ServiceTest extends Activity {

    /** Called when the activity is first created. */

        private Button startService,stopService,bindService,unbindService;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        startService=(Button)findViewById(R.id.startButton);

        stopService=(Button)findViewById(R.id.stopButton);

        bindService=(Button)findViewById(R.id.bindButton);

        unbindService=(Button)findViewById(R.id.unbindButton);

        startService.setOnClickListener(startListener);

        stopService.setOnClickListener(stopListener);

        bindService.setOnClickListener(bindListener);

        unbindService.setOnClickListener(unbindListener);

        

    }

    private OnClickListener startListener=new OnClickListener()

    {



                @Override

                public void onClick(View v) {

                        // TODO Auto-generated method stub

                        Intent intent=new Intent();

                        intent.setAction("org.hualang.service.action.MYSERVICE");

                        startService(intent);

                }

            

    };

    private OnClickListener stopListener=new OnClickListener()

    {



                @Override

                public void onClick(View v) {

                        // TODO Auto-generated method stub

                        Intent intent=new Intent();

                        intent.setAction("org.hualang.service.action.MYSERVICE");

                        stopService(intent);

                }

            

    };

    private ServiceConnection conn=new ServiceConnection()

    {



                @Override

                public void onServiceConnected(ComponentName name, IBinder service) {

                        // TODO Auto-generated method stub

                        Log.i("SERVICE", "connection success");

                        Toast.makeText(ServiceTest.this, "connection success", Toast.LENGTH_LONG).show();

                }



                @Override

                public void onServiceDisconnected(ComponentName name) {

                        // TODO Auto-generated method stub

                        Log.i("SERVICE", "connection success");

                        Toast.makeText(ServiceTest.this, "connection failure", Toast.LENGTH_LONG).show();

                }

            

    };

    private OnClickListener bindListener=new OnClickListener()

    {



                @Override

                public void onClick(View v) {

                        // TODO Auto-generated method stub

                        Intent intent=new Intent();

                        intent.setAction("org.hualang.service.action.MYSERVICE");

                        bindService(intent,conn,Service.BIND_AUTO_CREATE);

                }

            

    };

    private OnClickListener unbindListener=new OnClickListener()

    {



                @Override

                public void onClick(View v) {

                        // TODO Auto-generated method stub

                        Intent intent=new Intent();

                        intent.setAction("org.hualang.service.action.MYSERVICE");

                        unbindService(conn);

                }

            

    };

}
复制代码




AndroidManifest.xml文件中注册Service如下

Java代码
<service android:name="MyService">

                        <intent-filter>

                                <action android:name="org.hualang.service.action.MYSERVICE"/>

                        </intent-filter>

                </service>
复制代码


main.xml布局文件

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

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

    androidrientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

        <Button

                android:text="启动Service"

                android:id="@+id/startButton"

                android:layout_width="fill_parent"

                android:layout_height="wrap_content"

        />

                <Button

                android:text="停止Service"

                android:id="@+id/stopButton"

                android:layout_width="fill_parent"

                android:layout_height="wrap_content"

        />

                <Button

                android:text="绑定Service"

                android:id="@+id/bindButton"

                android:layout_width="fill_parent"

                android:layout_height="wrap_content"

        />

                <Button

                android:text="解除绑定unbindService"

                android:id="@+id/unbindButton"

                android:layout_width="fill_parent"

                android:layout_height="wrap_content"

        />

</LinearLayout>
复制代码


不解释,看运行结果就会明白
(1)当点击“启动Servcie”会先弹出"onCreate",然后弹出"onStart"的Toast,在LogCat中会看到先显示
的也是
onCreate
onStart


(2)点击“停止Service”按钮,会弹出onDestroy的Toast
LogCat中也会显示
onDestroy()



(3)点击"绑定Service"按钮,会弹出onCreate和onBind的Toast
LogCat中显示
onCreate
onBind



(4)点击“解除绑定Service”按钮,会弹出onDestroy的Toast,LogCat中也如此





下面是LogCat中显示的信息


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 11:59 , Processed in 0.376154 second(s), 48 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表