您的位置:首页 > 移动开发 > Android开发

android Service简介及启动关闭方式

2014-11-28 15:51 393 查看
(1)Service是Android系统中的四大组件之一,和Activity是同一层次的组件;它是一种生命周期较长,没有可视化界面,运行于后台的一种服务;例如,我们听音乐可以使用Service,下载东西可以使用Service,我们还可以用它来记录我们所在地理位置的改变,或者启动一个服务来一直监听某种动作;我们还可以使用Service更新Content Provider,发送Intent以及启动系统的通知等;

  

(2)Service生命周期不太复杂,它只继承了onCreate(),onStartCommand(),onDestroy()方法;它的启动方式有两种:

  Context.startService() ->onCreate()- >onStartCommand()->Service running--调用Context.stopService() ->onDestroy();

  Context.bindService()->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()

  需注意的是:原本的onStart()方法已经deprecated,已经被onStartCommand()替代,但onStartCommand()内部则是先调用了onStart();

  生命周期如图:



实例如下:



点击startServiceButton时:多点击几次;



点击stopServiceButton时;



activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/startButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="startServiceButton"
/>
<Button
android:id="@+id/stopButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="stopServiceButton"
/>

</LinearLayout>


FirstService.java

package com.xiaozhang.androidservice;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class FirstService extends Service {

@Override
public IBinder onBind(Intent intent) {
System.out.println("Service onBind!");
return null;
}

@Override
public void onCreate() {
super.onCreate();
System.out.println("Service onCreate();");
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("startId" + startId);
System.out.println("Service onStartCommand()");
return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
System.out.println("Service onDestory()");
super.onDestroy();
}

}


MainActivity.java

package com.xiaozhang.androidservice;

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 MainActivity extends Activity {

private Button startButton = null;
private Button stopButton = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

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

startButton.setOnClickListener(new StartServiceListener());
stopButton.setOnClickListener(new StopServiceListener());

}

class StartServiceListener implements OnClickListener {

@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, FirstService.class);
startService(intent);
}

}

class StopServiceListener implements OnClickListener {

@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, FirstService.class);
stopService(intent);
}

}

}


最后还需要把服务给注册到AndroidManifest.xml中:

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


内容一部分转自:
http://www.cnblogs.com/zhangdongzi/archive/2012/01/08/2316711.html
推荐阅读:
http://blog.csdn.net/ithomer/article/details/7364024
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: